繁体   English   中英

如何使用 LDAP 和 C# 搜索用户 ID 列表?

[英]How do I search for a list of user id's using LDAP and C#?

我需要搜索给定特定用户 ID 列表的用户。 如果我使用此过滤器搜索单个用户,它工作正常:

 using (DirectorySearcher ds = new DirectorySearcher(de) { Filter = $"(&(sAMAccountType=805306368)(sAMAccountName=xyz123))" })
 {
    SearchResult sr = ds.FindOne();
 }

我发现了这个LDAP 过滤器语法页面,它显示条件可以嵌套。

(|(cn=Jim Smith)(&(givenName=Jim)(sn=Smith)))

条件可以用括号嵌套,但要确保括号匹配。

所以我尝试使用这个过滤器和 FindAll(),虽然我希望我们看到 1,加拿大看到 1,但它只在加拿大找到了一个。

(&(sAMAccountType=805306368)(!(sAMAccountName=xyz123)(sAMAccountName=abc456)))

查询域名:us

计数:0

查询域名:加拿大

计数:1

所以也许我对过滤器语法的理解不够好。 另外,是否可以一次调用搜索所有域?

您正在使用感叹号 ( ! ),表示“不是”。 您想使用 pipe ( | ),这意味着“或”:

(&(sAMAccountType=805306368)(|(sAMAccountName=xyz123)(sAMAccountName=abc456)))

如果您有大量要查找的用户名(我说的是数百个),您可能会考虑将它们分成单独的搜索。 我实际上在我写的一篇文章中介绍了这个(带有示例代码): Active Directory:更好的性能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM