【发布时间】:2018-07-09 22:42:21
【问题描述】:
如何获取位于 LDAP 组织单元内的每个用户和/或组的列表?
我正在尝试使用c# 查询我的LDAP 服务器。我想获得所有分发列表的列表。我的所有分发列表都归入一个称为“常规分发”的组织单元 (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;
}
【问题讨论】:
-
如果您将过滤器更改为类似于:
objSearchADAM.Filter = $"(&(memberOf=General Distribution)(objectClass=user))"并将范围添加到您的DirectoryEntry,会发生什么情况:LDAP://my_domain.com/OU=[higherLevelOu];Distributions,DC=my_domain,DC=com -
没有更高的OU。不知道该放什么,但使用
(&(memberOf=General Distribution)(objectClass=user))不起作用
标签: c# ldap directoryentry directorysearcher ou