【发布时间】:2019-10-21 17:29:38
【问题描述】:
我需要搜索给定特定用户 ID 列表的用户。如果我使用此过滤器搜索单个用户,它工作正常:
using (DirectorySearcher ds = new DirectorySearcher(de) { Filter = $"(&(sAMAccountType=805306368)(sAMAccountName=xyz123))" })
{
SearchResult sr = ds.FindOne();
}
我找到了这个LDAP Filter Syntax page,它表明条件可以嵌套。
(|(cn=Jim Smith)(&(givenName=Jim)(sn=Smith)))
条件可以用括号嵌套,但请确保 括号匹配。
所以我尝试使用这个过滤器和 FindAll(),虽然我希望看到我们的 1 和加拿大的 1,但它只在加拿大找到了一个。
(&(sAMAccountType=805306368)(!(sAMAccountName=xyz123)(sAMAccountName=abc456)))
搜索域名:us
计数:0
搜索域名:加拿大
计数:1
所以也许我对过滤器语法的理解不够好。另外,是否可以一次调用搜索所有域?
【问题讨论】:
-
你有一个!在您的语法中,而不是 OR (|)
标签: c# active-directory ldap directoryservices directorysearcher