2009-12-18 8 views
11

Je souhaite utiliser AccountManagement pour répertorier tous les groupes d'une unité organisationnelle.Obtenir des groupes à partir de l'unité d'organisation à l'aide de DirectoryServices.AccountManagement

L'extrait suivant fonctionne avec DirectoryServices mais je dois instancier GroupPrincipal avec le chemin d'accès DirectoryEntry dans le résultat (qui ressemble à un correctif sale).

DirectoryEntry root = new DirectoryEntry("LDAP://OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local") 
     DirectorySearcher ds = new DirectorySearcher(root); 
     ds.Filter = "(objectCategory=group)"; 
     SearchResultCollection results = ds.FindAll(); 

Avez-vous une idée?

Merci!

Répondre

32

Vous pouvez définir le PrincipalContext à l'unité d'organisation où vous voulez commencer la recherche et utiliser le PrincipalSearcher -class dans System.DirectoryService.AccountManagement pour accomplir ce dont vous avez besoin, comme ceci:

PrincipalContext yourOU = new PrincipalContext(ContextType.Domain, "mycompany.local", "OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local"); 
GroupPrincipal findAllGroups = new GroupPrincipal(yourOU, "*"); 
PrincipalSearcher ps = new PrincipalSearcher(findAllGroups); 
foreach(var group in ps.FindAll()) 
{ 
    Console.WriteLine(group.DistinguishedName); 
} 
Console.ReadLine(); 
+0

Merci beaucoup !! J'avais essayé cela mais j'ai manqué le joker "*". – teebot

+1

Merci pour le 'DistinguishedName' – dbardakov