0

如何获取位于 LDAP 组织单元内的每个用户和/或组的列表?

我正在尝试LDAP使用c#. 我想获得所有分发列表的列表。我的所有分发列表都归入一个称为“常规分发”的组织单元 (OU)。如何获取“General Distributions”OU 下所有成员的列表?

下面是我用来查询LDAP不返回结果的服务的代码。

try
{
        DirectoryEntry objADAM = new DirectoryEntry("LDAP://my_domain.com", "user@my_domain.com", "password");

        DirectorySearcher objSearchADAM = new DirectorySearcher(objADAM);
        objSearchADAM.Filter = "(&(OU=General Distributions,DC=my_domain,DC=com)"; 
        objSearchADAM.SearchScope = SearchScope.Subtree;
        SearchResultCollection objSearchResults = objSearchADAM.FindAll();


        // Binding path. 
        List<string> result = new List<string>();

        if (objSearchResults.Count != 0)
        {
            foreach (SearchResult objResult in objSearchResults)
            {
                DirectoryEntry objGroupEntry = objResult.GetDirectoryEntry();
                result.Add(objGroupEntry.Name);
            }

            return result;
        }

        throw new Exception("No result found");
}
catch (Exception e)
{
        throw e;
}
4

1 回答 1

1

我知道这个问题有点老了,但答案很简单。将 OU 本身用作DirectoryEntry您正在使用的SearchRoot

DirectoryEntry objADAM = new DirectoryEntry(
    "LDAP://my_domain.com/OU=General Distributions,DC=my_domain,DC=com",
    "user@my_domain.com", "password");

DirectorySearcher objSearchADAM = new DirectorySearcher(objADAM);
objSearchADAM.Filter = "(|(objectClass=user)(objectClass=group))"; //only get users and groups
objSearchADAM.SearchScope = SearchScope.Subtree;
SearchResultCollection objSearchResults = objSearchADAM.FindAll();
于 2018-10-17T12:56:02.957 回答