2009-12-18 12 views
11

Me gustaría usar AccountManagement para enumerar todos los grupos en una Unidad organizativa.Obtener grupos de OU mediante DirectoryServices.AccountManagement

El siguiente fragmento funciona con DirectoryServices, pero tendría que instanciar GroupPrincipal con la ruta DirectoryEntry en el resultado (que parece una solución sucia).

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

¿Alguien tiene una idea?

Gracias!

Respuesta

32

Puede configurar el PrincipalContext a la unidad organizativa en la que desea iniciar la búsqueda y el uso de la -class PrincipalSearcher en System.DirectoryService.AccountManagement para lograr lo que necesita, como esto:

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

Muchas gracias !! Lo intenté pero me perdí el comodín "*". – teebot

+1

Gracias por el 'DistinguishedName' – dbardakov

Cuestiones relacionadas