Active Directory Query с использованием LDAP Query в пользовательском поиске - PullRequest
0 голосов
/ 07 марта 2019

Некоторым пользователям в домене, над которым я работаю, не назначен менеджер или нет должности, поэтому я попытался создать новый запрос с этим запросом LDAP на вкладке definequery> customsearch> advanced:

(&(objectCategory=user)(objectClass=user))(|(!manager=*)(!title=*)

Это возвращает ноль результатов, хотя я знаю, что они существуют. Использование пользовательского поиска создает ту же строку поиска, а также возвращает ноль результатов. Я попробовал это, основываясь на других исследованиях, которые также дают ноль результатов.

(&(objectCategory=person)(objectClass=user))(|(!manager=*)(!title=*)

Что я делаю не так?

Кроме того, я хочу искать только в определенных папках и их подпапках, если я должен предварительно это:

(|(OU=Innsbruck)(OU=Totnes)(OU=Dueren))

, где они находятся непосредственно под доменом, и у каждого местоположения есть свои собственные подпапки Компьютеры, Группы, Пользователи.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Мне кажется, что фильтр не соответствует RFC 4515: строковое представление LDAP поисковых фильтров.Может быть AD и используемый вами инструмент принимает его, но фильтры NOT должны быть в форме (!(manager=*)).

(&(objectCategory=person)(objectClass=user)(|(!(manager=*))(!(title=*))))

1 голос
/ 07 марта 2019

Ваш запрос просто недействителен. Это окно не говорит вам об этом - оно просто дает нулевой результат.

Вам не хватает закрывающих скобок, и вам нужно поместить условие ИЛИ в условие И. И вам также нужно использовать (objectCategory=person), а не (objectCategory=user). Вам действительно не нужно (objectCategory=person), поскольку (objectClass=user) достаточно хорош, чтобы ограничить поиск пользовательскими объектами, но это не повредит.

Вот как это должно выглядеть:

(&(objectCategory=person)(objectClass=user)(|(!manager=*)(!title=*)))

Обычно я вставляю свой запрос в Блокнот ++ , который выделяет совпадающие скобки, поэтому легко найти пропущенные. Или вы можете разбить его на несколько строк, чтобы было легче читать и выявлять ошибки:

(&
    (objectCategory=person)
    (objectClass=user)
    (|
        (!manager=*)
        (!title=*)
    )
)

Независимо от того, как вы выполняете поиск (через пользовательский интерфейс «Пользователи и компьютеры» или через код), вы можете выполнять поиск только в одном подразделении за раз. Нет атрибута OU или любого другого атрибута, который вы можете использовать в запросе для ограничения конкретными OU.

В пользовательском интерфейсе вы можете нажать «Обзор» в правом верхнем углу, чтобы выбрать подразделение, которое вы хотите найти.

Если вы делали это в коде, вы можете сделать пару вещей, чтобы ограничить его конкретными OU:

  1. Поиск в каждом подразделении по отдельности (при желании вы можете настроить область поиска так, чтобы не выполнять поиск в подразделениях, если хотите), или
  2. Поиск по всему домену, затем просмотр атрибута distinguishedName каждого результата и отбрасывание результатов из OU, которые вам не нужны.

Опция # 2, вероятно, будет работать быстрее, так как меньше сетевых запросов.

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