【发布时间】:2015-12-16 15:42:09
【问题描述】:
我正在尝试从 Active Directory 中提取 每个 用户。我目前正在使用这种方法:
DirectorySearcher search = new DirectorySearcher();
search.Filter = "(objectClass=user)";
foreach (SearchResult result in search.FindAll())
{
if(result.Properties["mail"].Count > 0 && result.Properties["displayName"].Count > 0)
{
emailAddresses.Add(new EmailDetails
{
EmailAddress = result.Properties["mail"][0].ToString(),
EmailDisplayName = result.Properties["displayName"][0].ToString()
});
}
}
这只是我期望的名字的大约 3/4。这是为了让我离开......所以我很好奇并添加了一个新过滤器,看看我是否可以通过将过滤器更改为这样来拉动自己:
search.Filter = "(&(objectClass=user)(sn=za*))";
事实上,这确实正确地吸引了我,我基本上是通过设置过滤器来搜索以za 开头的每个姓氏来强迫它吸引我。但是为什么我使用的第一个搜索过滤器没有吸引所有用户呢?
【问题讨论】:
-
它返回了多少用户?您说的是 3/4,但它是否返回一个确切的数字,例如 100、500、1000 等?返回的结果可能存在服务器端限制。另外,既然您只寻找拥有
mail和displayName的用户,为什么不首先将它们添加到ldap 过滤器中呢?效率更高。 -
它返回 644,从我读到的服务器端限制是 1000
标签: c# active-directory ldap ldap-query