Search code examples
c#sharepointactive-directorydistributionactive-directory-group

Reading/Filtering Distribution Group's Subgroups of an active directory?


I've an Active Directory with domain myDomain.local, under it there exists a Distribution Group that contains many groups.
How can I read (programmatically) all these subgroups to retrieve a list of their names ?
And how to optimize the query to filter the result so that it just retrieves all the groups that ends with the word Region ?
BTW, I'm using C#.Net, ASP.Net and sharepoint, and i'm not experienced with AD.


Solution

  • Here's the solution I made; for those who are interested:

    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;
    }