Мне нужно искать пользователей по конкретному списку идентификаторов пользователей. Он работает нормально, если я использую этот фильтр для поиска одного пользователя:
using (DirectorySearcher ds = new DirectorySearcher(de) { Filter = $"(&(sAMAccountType=805306368)(sAMAccountName=xyz123))" })
{
SearchResult sr = ds.FindOne();
}
Я нашел эту страницу синтаксиса фильтра LDAP и показывает, что условия могут быть вложенными.
(| (cn = Джим Смит) (& (данное имя = Джим) (sn = Смит)))
Условия могут быть вложены в скобки, но убедитесь, что скобки совпадают.
Поэтому я попытался использовать этот фильтр и FindAll (), и хотя я ожидал увидеть 1 для нас и 1 для Канады, он нашел только один в Канаде.
(&(sAMAccountType = 805306368) (! (sAMAccountName = xyz123) (sAMAccountName = abc456)))
Поиск домена: us
Количество: 0
Поиск домена: Канада
Количество: 1
Так что, возможно, я недостаточно хорошо понимаю синтаксис фильтра. Кроме того, можно ли выполнить поиск по всем доменам одним вызовом?