Фильтр запросов LDAP по количеству участников в Active Directory

Супер новичок в Active Directory и создании запросов LDAP.

Я хочу попробовать создать группы рассылки только с 1 участником. Я пытался отредактировать запрос, который использовал для поиска групп без участников, но безуспешно. Я искал решение, но не смог найти никакой информации. Мне просто было любопытно, возможно ли это вообще.

(&(&(&(objectCategory=group)(member=1)(objectClass=group)(proxyAddresses=*@domain.com))))

person grimes88    schedule 15.11.2017    source источник


Ответы (1)


Нет, вы не можете использовать один-единственный запрос LDAP.

Фильтр (member=1) не работает, потому что он просто пытается сопоставить недопустимый dn ('1'). Кстати, весь фильтр неверен, вам не нужно ни вкладывать условия, ни добавлять & операторов для каждого. Однако вы все равно можете добавить (!(member=*)), чтобы исключить группы, в которых нет ни одного участника. Итак, в вашей ситуации правильный фильтр должен выглядеть так:

(&(objectCategory=group)(objectClass=group)(proxyAddresses=*@domain.com)(!(member=*)))

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

Вы также можете добавить настраиваемый атрибут к групповым объектам, чтобы вы могли хранить в нем количество участников и, наконец, иметь возможность применять фильтры, как вы планировали, в первую очередь (например, memberCount = 1), то есть в одном запросе. НО это, конечно, также требует сохранения атрибута.

person EricLavault    schedule 16.11.2017