如何获取位于 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();