Запит для переліку всіх користувачів певної групи


78

Як я можу використовувати пошуковий фільтр для відображення користувачів певної групи?

Я спробував наступне:

(&
    (objectCategory=user)
    (memberOf=MyCustomGroup)
)

і це:

(&
    (objectCategory=user)
    (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com)
)   

але не відображають користувачів певної групи.

Відповіді:


107

memberOf (в AD) зберігається як список визначних імен. Ваш фільтр повинен бути приблизно таким:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))

Якщо у вас ще немає відмінного імені, ви можете шукати його за допомогою:

(&(objectCategory=group)(cn=myCustomGroup))

і повернути атрибут distinguishedName. Справа може мати значення.


6
Зазвичай в Active Directory у вас є кілька організаційних підрозділів, які містять структуру. Стандартним кореневим підрозділом для груп є Групи. Цілком ймовірно, що cn = MyCustomGroup, ou = Groups, dc = subdomain, dc = domain, dc = com буде працювати для вас. Якщо цього не сталося, я б рекомендував виконати пошук LDAP для вашої групи (& (objectCategory = group) (cn = MyCustomGroup)) та включити атрибут distinctName до набору результатів. Це точно вкаже, який рядок використовувати в іншому запиті
Кодра

1
я зробив те, що ви сказали, але результатів назад я не отримав, використовуючи наступне: (& (objectCategory = user) (memberOf = cn = SingleSignOn, ou = Groups, dc = tis, dc = eg, dc = ddd, DC = com) )
Мадам Зу Зу

1
Ви намагалися зробити пошук для своєї групи, щоб переконатися, що у вас правильний DN? Моїм фільтром буде (& (objectCategory = group) (cn = SingleSignOn)), а властивістю буде "distinNName". Переконайтеся, що ви шукаєте з кореня Домену, а не з ОУ користувача (що ви могли б робити, якщо ваш фільтр призначений лише для користувачів). Ви можете взяти з цього запиту визначне ім’я та підключити його безпосередньо до свого запиту користувача.
Кодра

тьфу ... я думаю це було чутливим до регістру ... здається, зараз працює !!! :)) Дякую!!!!!!!!!!!
Мадам Зу Зу

Я не думаю, що кожух є проблемою в просторі.
Тімоті Гонсалес,

11

Для користувачів Active Directory альтернативним способом зробити це було б - за умови, що всі ваші групи зберігаються OU=Groups,DC=CorpDir,DC=QA,DC=CorpName- використовувати запит (&(objectCategory=group)(CN=GroupCN)). Це добре працюватиме для всіх груп, що мають менше 1500 членів. Якщо ви хочете перерахувати всіх членів великої групи AD, той самий запит спрацює, але вам доведеться використовувати діапазонний пошук для отримання всіх членів, 1500 записів одночасно.

Ключ до виконання діапазонних пошуків полягає у визначенні діапазону в атрибутах за допомогою цього синтаксису: attribute; range = low-high . Отже, щоб отримати всіх членів групи AD з 3000 членів, спочатку запустіть наведений вище запит з проханням member;range=0-1499повернути атрибут, а потім member;range=1500-2999атрибут.


1
Не забудьте вказати (CN=GroupCN). Я намагався запитувати всі групи, і це не спрацьовувало, поки я не вказав це. Також ви можете використовувати зірочку, коли ви вказуєте діапазон: member;range=1500-*- він також добре працює.
Сталінко

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.