2011-05-25 71 views
4

假設我有一個SID列表。快速查詢活動目錄

目前我在爲每個SID查詢AD。類似於

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

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

    var result = search.FindOne(); 

    ..... 
} 

有沒有比這更快的方法?有沒有辦法循環查詢所有信息,而不是循環?

+0

它必須在C#中完成嗎? – benPearce 2011-05-25 22:31:24

回答

5

我不知道我理解你的問題,但你爲什麼不在循環中建立一個過濾器,然後搜索一次。該過濾器會像:

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

如果你有.NET 3.5或更高版本,那麼你可以work with principals

根據How Active Directory Searches Work,服務器嘗試處理的最大LDAP請求大小爲10485760字節。如果服務器接收到大於此值的請求,它將關閉連接。話雖如此,我從來沒有測試過它。

+0

謝謝!這就是它!我不確定過濾器的語法如何。現在我明白了。 – pdiddy 2011-05-26 12:39:19

+0

有點奇怪,它使用波蘭語法(PN)或Prefic表示法,這是數學表示法,其中每個運算符都爲其所有操作數加上字母。 – JPBlanc 2011-05-26 13:49:40

+0

感謝您的知識!我想知道這是什麼語法。 – pdiddy 2011-05-26 16:32:18