Быстрый запрос к Active Directory - PullRequest
4 голосов
/ 26 мая 2011

Допустим, у меня есть список SID.

В настоящее время я запрашиваю AD для каждого SID.Что-то вроде

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

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

    var result = search.FindOne();

    .....
}

Есть ли более быстрый способ, чем этот?Вместо цикла есть ли способ запроса всей информации за один цикл вместо цикла?

1 Ответ

5 голосов
/ 26 мая 2011

Я не уверен, что понимаю ваш вопрос, но почему бы вам не создать фильтр в цикле, а затем выполнить поиск один раз. Фильтр будет выглядеть так:

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

Если у вас есть .NET 3.5 или выше, тогда вы можете работать с принципалами .

Согласно Как работает поиск в Active Directory , максимальный размер запроса LDAP, который сервер пытается обработать, составляет 10485760 байт. Если сервер получает запрос, превышающий это значение, он закрывает соединение. Сказав это, я никогда не проверял это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...