2010-10-08 74 views
2

J'essaie d'utiliser Perl pour déterminer si un utilisateur Windows est membre d'un groupe Windows, si le groupe contient des groupes imbriqués.Comment utiliser Perl pour tester l'appartenance à un groupe Win32 lorsque le groupe contient des groupes imbriqués?

J'ai essayé d'utiliser Win32::NetAdmin::GroupIsMember(), mais cela ne fonctionne que si l'utilisateur est un membre direct du groupe.

Je ne suis pas un expert AD ou LDAP, mais les exemples que j'ai googlé montrent le même comportement.

Par exemple, l'utilisateur "joe" est un membre du groupe "A". Le groupe "A" est un membre du groupe "B". Je veux tester si joe est membre de "B".

Répondre

1

Vous pouvez utiliser la récursivité pour parcourir l'AD ou (mieux) énumérer les membres du groupe via les SID. Voir ce qui suit pour un exemple: http://explodingcoder.com/blog/content/how-query-active-directory-security-group-membership

+0

J'ai essayé ce code, mais l'énumération des SID renvoie uniquement les groupes dont l'utilisateur est membre direct. –

+0

I.E. L'énumération de SIDS montrera que l'utilisateur "joe" est membre du groupe A, mais pas du groupe B. –

+0

L'article auquel je suis lié semble s'appliquer exactement à votre situation. De l'article: "... l'utilisateur est membre de 'IT Operations', et ce groupe est membre de 'IT Department'." Je n'ai pas décrit la méthode dans le détail puisque l'article fait un meilleur travail que je l'aurais fait. Il y a aussi un exemple de code dans Perl. – igelkott