Назад | Перейти на главную страницу

Как я могу получить список активных членов группы каталогов, которые не отключены (без использования PowerShell?)

Я пытаюсь получить список пользователей, которые являются членами группы Active Directory, которая не отключена. Лучшее, что мне удалось найти, это:

dsquery group -name "Group name" | dsget group -members -expand  | dsget user -samid -disabled -c | findstr /c:" no "

... признавая, что последний 'findstr' является полным взломом (и, к сожалению, он также удаляет заголовки столбцов.)

Мне удалось найти следующую команду dsquery, которая дает список всех не отключенных пользователей:

dsquery * -filter "(&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" -limit 0 | dsget user -samid -c

... но добавив memberOf параметр работает только для групп, в которые непосредственно входят пользователи; это не рекурсивно как dsget groupс -expand делает.

Итак, есть ли способ объединить их, или заставить dsquery рекурсировать, или я зашел так далеко, как смог, без использования PowerShell? (Что я не могу, потому что его инструменты зависят от веб-служб Active Directory, которых нет на контроллерах домена на основе Samba, по крайней мере, с Samba 4.9.5.)

Этот синтаксис у меня сработал. Он использует LDAP_MATCHING_RULE_IN_CHAIN правило OID (1.2.840.113556.1.4.1941), чтобы проверить полное происхождение объекта:

dsquery * domainroot -limit 0 -r -filter "(&(objectCategory=user)(memberOf:1.2.840.113556.1.4.1941:=CN=Group Name,OU=Security Groups,DC=domain,DC=com)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"

Обязательно замените пример строки отличительного имени (memberOf = CN = имя группы, OU = группы безопасности, DC = домен, DC = com) на DN группы, для которой вы запрашиваете рекурсивное членство.

Этот запрос возвращает DN каждого включенного пользователя в группе. Если вы конкретно хотите получить sAMAccountName и страну, используйте:

dsquery * domainroot -limit 0 -r -filter "(&(objectCategory=user)(memberOf:1.2.840.113556.1.4.1941:=CN=Group Name,OU=Security Groups,DC=domain,DC=com)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" -attr sAMAccountName co