我需要搜索给定特定用户 ID 列表的用户。如果我使用此过滤器搜索单个用户,它工作正常:
using (DirectorySearcher ds = new DirectorySearcher(de) { Filter = $"(&(sAMAccountType=805306368)(sAMAccountName=xyz123))" })
{
SearchResult sr = ds.FindOne();
}
我找到了这个LDAP Filter Syntax 页面,它显示条件可以嵌套。
(|(cn=Jim Smith)(&(givenName=Jim)(sn=Smith)))
条件可以用括号嵌套,但要确保括号匹配。
所以我尝试使用这个过滤器和 FindAll(),虽然我希望我们看到 1,加拿大看到 1,但它只在加拿大找到了一个。
(&(sAMAccountType=805306368)(!(sAMAccountName=xyz123)(sAMAccountName=abc456)))
查询域名:us
计数:0
查询域名:加拿大
计数:1
所以也许我对过滤器语法的理解不够好。另外,是否可以一次调用搜索所有域?