Страница 1 из 1

WinServer-ActiveDirectory: Выводим список членов группы

Добавлено: 23 мар 2017, 18:32
xor
Источник: https://habrahabr.ru/company/netwrix/blog/160837/
Офтопик

Для реализации описанного процесса необходимо соблюдение определенных требований:
Чтобы использовать PowerShell для управления AD, нужно соблюсти несколько требований. Я собираюсь продемонстрировать, как командлеты для AD работают на примере компьютера на Windows 7.
Чтобы использовать командлеты, контроллер домена у Вас должен быть уровня Windows Server 2008 R2, или же Вы можете скачать и установить Active Directory Management Gateway Service на наследуемых контроллерах домена (legacy DCs). Внимательно прочитайте документацию перед установкой; требуется перезагрузка КД.
На стороне клиента, скачайте и установите Remote Server Administration Tools (RSAT) либо для Windows 7, либо для Windows 8. В Windows 7, Вам необходимо будет открыть в Панели управления (Control Panel) раздел Программы (Programs) и выбрать Включить или выключить функции Windows (Turn Windows Features On or Off). Найдите Remote Server Administration Tools и раскройте раздел Role Administration Tools. Выберите подходящие пункты для AD DS and AD LDS Tools, особенно обратите внимание на то, что должен быть выбран пункт Active Directory Module for Windows PowerShell, как показано на рисунке 1. (В Windows 8 все инструменты выбраны по умолчанию). Теперь мы готовы работать.

Я вошел в систему под учетной записью с правами доменного администратора. Большинство командлетов, которые я буду показывать, позволят Вам уточнить альтернативные полномочия (credentials). В любом случае я рекомендую прочитать справку (Get-Help) и примеры, которые я буду демонстрировать ниже.
Начните сессию PowerShell и просмотрите список модулей:
PS C:\> Get-Module -listavailable
импортируйте модуль AD:
PS C:\> Import-Module ActiveDirectory
В результате импорта создается новый PSDrive, но мы не будем использовать его. Однако, Вы можете посмотреть, какие команды имеются в импортированном модуле.
PS C:\> get-command -module ActiveDirectory
Прелесть этих команд в том, что если я могу использовать команду для одного объекта AD, то ее можно использовать для 10, 100 и даже 1000. Посмотрим, как некоторые из этих командлетов работают.
Вы возможно захотите узнать, кто находится в определенной группе. Например, Вы должны периодически узнавать, кто входит в группу доменных администраторов (Domain Admins):

PS C:\> Get-ADGroupMember "Domain Admins"

Ниже приведен результат. Командлет выводит объект AD для каждого члена группы. А что делать с вложенными группами? Моя группа Chicago All Users является коллекцией вложенных групп. Чтобы получить список всех учетных записей, я всего лишь должен использовать параметр –Recursive.

PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName

Если Вы хотите пойти другим путем – найти, в каких группах пользователь состоит, — используйте свойство пользователя MemberOf:

Код: Выделить всё

PS C:\> get-aduser jfrost -property Memberof |
Select -ExpandProperty memberOf
CN=NewTest,OU=Groups,OU=Employees,
DC=GLOBOMANTICS,DC=local
CN=Chicago Test,OU=Groups,OU=Employees,
DC=GLOBOMANTICS,DC=local
CN=Chicago IT,OU=Groups,OU=Employees,
DC=GLOBOMANTICS,DC=local
CN=Chicago Sales Users,OU=Groups,OU=Employees,
DC=GLOBOMANTICS,DC=local
Я использовал параметр -ExpandProperty, чтобы вывести имена MemberOf как строки.