Могу ли я создать фильтр DirectorySearcher, используя только extensionAttribute4?

Я использую DirectorySearcher и хочу получить всех пользователей AD, которые не установили extensionAttribute4.

Здесь я использую этот DirectorySearcher, который возвращает всех пользователей AD, но мне нужна помощь, как я могу изменить этот DirectorySearcher таким образом, чтобы он возвращал тех пользователей AD, которые не установили extensionAttribute4. Любая помощь будет высоко оценена.

 using (DirectorySearcher oSearch = new DirectorySearcher(oSearchRoot))
 {
      oSearch.Filter = "(&(objectClass=user)(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))";

      SearchResultCollection oResultCol = oSearch.FindAll();

}

person Muhammad Arsalan Altaf    schedule 10.04.2020    source источник


Ответы (1)


Вы уже прошли большую часть пути. Эта часть:

(objectClass=user)(objectCategory=person)

говорит ему искать пользовательские объекты. Итак, вы хотите сохранить это. Эта часть:

(!userAccountControl:1.2.840.113556.1.4.803:=2)

говорит ему найти учетные записи, у которых не установлен второй бит в атрибуте userAccountControl (второй бит — это флаг, означающий «отключен»).

Таким образом, чтобы найти учетную запись, для которой не установлен атрибут extensionAttribute4, вы по-прежнему используете оператор !, но вы используете его с оператором подстановочного знака *, поэтому это означает, что «этому атрибуту ничего не задано».

Таким образом, ваш окончательный фильтр будет выглядеть так:

(&(objectClass=user)(objectCategory=person)(!extensionAttribute4=*))
person Gabriel Luci    schedule 10.04.2020
comment
спасибо за ваш ответ, он работает в соответствии с моим требованием. - person Muhammad Arsalan Altaf; 13.04.2020