如何从LDAP获取组织单位下所有对象的列表?



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

我正在尝试使用c#查询我的LDAP服务器。我想获取所有通讯组列表的列表。我的所有通讯组列表都分组在一个名为"常规分发"的组织单位 (OU( 下。如何获取"一般分配"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;
}

我知道这个问题有点老了,但答案相当简单。使用 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();

最新更新