tipos principiantes para funciones explicacion directorio curso administracion activo active c# sharepoint active-directory distribution active-directory-group

c# - principiantes - ldap directorio activo



Lectura/filtrado de los subgrupos del grupo de distribuciĆ³n de un directorio activo? (2)

Tengo un Directorio Activo con dominio myDomain.local , debajo de él existe un Distribution Group que contiene muchos grupos.
¿Cómo puedo leer (programáticamente) todos estos subgrupos para recuperar una lista de sus nombres?
¿Y cómo optimizar la consulta para filtrar el resultado de modo que solo recupere todos los grupos que terminan con la palabra Region ?
Por cierto, estoy usando C # .Net, ASP.Net y sharepoint, y no tengo experiencia con AD.


Si está utilizando .NET 3.5 (o puede actualizarlo), puede usar este código utilizando el espacio de nombres System.DirectoryServices.AccountManagement :

// create the "context" in which to operate - your domain here, // as the old-style NetBIOS domain, and the container where to operate in PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", "cn=Distribution Group,dc=YourDomain,dc=local"); // define a "prototype" - an example of what you''re searching for // Here: just a simple GroupPrincipal - you want all groups GroupPrincipal prototype = new GroupPrincipal(ctx); // define a PrincipalSearcher to find those principals that match your prototype PrincipalSearcher searcher = new PrincipalSearcher(prototype); // define a list of strings to hold the group names List<string> groupNames = new List<string>(); // iterate over the result of the .FindAll() call foreach(var gp in searcher.FindAll()) { // cast result to GroupPrincipal GroupPrincipal group = gp as GroupPrincipal; // if everything - grab the group''s name and put it into the list if(group != null) { groupNames.Add(group.Name); } }

¿Eso satisface tus necesidades?

Para obtener más información sobre el espacio de nombres System.DirectoryServices.AccountManagement , lea la publicación Managing Directory Security Principals en el artículo de .NET Framework 3.5 en la revista MSDN.


Esta es la solución que hice; Para aquellos que estén interesados:

public ArrayList getGroups() { // ACTIVE DIRECTORY AUTHENTICATION DATA string ADDomain = "myDomain.local"; string ADBranchsOU = "Distribution Group"; string ADUser = "Admin"; string ADPassword = "password"; // CREATE ACTIVE DIRECTORY ENTRY DirectoryEntry ADRoot = new DirectoryEntry("LDAP://OU=" + ADBranchsOU + "," + getADDomainDCs(ADDomain), ADUser, ADPassword); // CREATE ACTIVE DIRECTORY SEARCHER DirectorySearcher searcher = new DirectorySearcher(ADRoot); searcher.Filter = "(&(objectClass=group)(cn=* Region))"; SearchResultCollection searchResults = searcher.FindAll(); // ADDING ACTIVE DIRECTORY GROUPS TO LIST ArrayList list = new ArrayList(); foreach (SearchResult result in searchResults) { string groupName = result.GetDirectoryEntry().Name.Trim().Substring(3); list.Add(groupName); } return list; } public string getADDomainDCs(string ADDomain) { return (!String.IsNullOrEmpty(ADDomain)) ? "DC=" + ADDomain.Replace(".", ",DC=") : ADDomain; }