【问题标题】:Query Active Directory Fast快速查询 Active Directory
【发布时间】:2011-05-25 21:12:05
【问题描述】:

假设我有一个 SID 列表。

目前我正在查询每个 SID 的 AD。像

foreach(string sidString in listOfSid)
{
    DirectorySearcher search = new ....

    search.Filter = string.Format("(objectSid={0})", ConvertToOctetString(sidString));

    var result = search.FindOne();

    .....
}

还有比这更快的方法吗?有没有一种方法可以一次性查询所有信息而不是循环?

【问题讨论】:

  • 必须在 C# 中完成吗?

标签: c# .net active-directory


【解决方案1】:

我不确定我是否理解您的问题,但是您为什么不在循环中构建一个过滤器然后搜索一次。过滤器将如下所示:

(|(objectSid=sid1)(objectSid=sid2)(...)(objectSid=sidn))

如果您拥有 .NET 3.5 或更高版本,则可以work with principals

根据How Active Directory Searches Work,服务器尝试处理的最大LDAP请求大小为10485760字节。如果服务器收到大于此值的请求,则关闭连接。话虽如此,我从未测试过。

【讨论】:

  • 谢谢!就是这样!我不确定过滤器的语法是怎样的。现在我明白了。
  • 是的有点奇怪,它使用波兰表示法 (PN) 或 Prefic Notation,它们是数学表示法,其中每个运算符都为其所有操作数添加前缀。
  • 感谢您的知识!我想知道这是什么语法。
  • 过滤器的长度有限制吗?我需要相同的功能,而且可能有数百个 SID。
  • @GarethOwen,我编辑我的答案以采纳您的评论。
猜你喜欢
  • 2012-01-09
  • 1970-01-01
  • 2010-11-08
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多