快速查询Active Directory

4
假设我有一个SID列表。目前,我正在查询每个SID的AD。类似以下内容:
foreach(string sidString in listOfSid)
{
    DirectorySearcher search = new ....

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

    var result = search.FindOne();

    .....
}

有比这更快的方法吗?除了循环,是否有一种方法可以一次查询所有信息,而不是循环查询?

必须使用C#吗? - benPearce
1个回答

5

我不确定我理解你的问题,但是为什么不在循环中构建一个过滤器,然后进行一次搜索。 过滤器将类似于:

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

如果您使用的是.NET 3.5或更高版本,则可以使用主体
根据Active Directory搜索工作原理,服务器尝试处理的最大LDAP请求大小为10485760字节。如果服务器接收到的请求大于此值,则会关闭连接。话虽如此,我从未测试过。

谢谢!就是这个!我不确定筛选器的语法是什么。现在我明白了。 - pdiddy
是的,有点奇怪,它使用了波兰表示法(PN)或前缀表示法,这是一种数学表示法,其中每个运算符都在其所有操作数之前。 - JPBlanc
谢谢你的知识!我一直在想这是哪种语法。 - pdiddy
过滤器的长度有限制吗?我需要相同的功能,可能会有数百个SIDs。 - GarethOwen
1
@GarethOwen,我编辑了我的答案,考虑到了你的评论。 - JPBlanc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接