2009-12-18 12 views
11

Vorrei utilizzare AccountManagement per elencare tutti i gruppi in un'unità organizzativa.Ottieni gruppi da OU utilizzando DirectoryServices.AccountManagement

Il seguente frammento funziona con DirectoryServices ma dovrei instanciare GroupPrincipal con il percorso DirectoryEntry nel risultato (che sembra una soluzione sporca).

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(); 

Qualcuno ha un'idea?

Grazie!

risposta

32

È possibile impostare il PrincipalContext all'unità organizzativa in cui si desidera avviare la ricerca e utilizzare il PrincipalSearcher di classe in System.DirectoryService.AccountManagement per compiere ciò che è necessario, in questo modo:

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

grazie mille !! Ci avevo provato ma ho saltato il carattere jolly "*". – teebot

+1

Grazie per il 'DistinguishedName' – dbardakov

Problemi correlati