Управление группами Active Directory с помощью PowerShell
В этой статье мы рассмотрим функции PowerShell для управления группами домена Active Directory. Мы увидим, как создать новую группу в AD, добавить в неё пользователей и удалить их, отобразить список пользователей группы и некоторые другие полезные действия с группами домена, которые чрезвычайно полезны для повседневного администрирования. Для управления группами AD в модуле Active Directory для Windows PowerShell доступны следующие базовые командлеты:
- New-ADGroup – для создания новой группы AD
- Add-AdGroupMember – добавление пользователя в группу AD
- Remove-ADGroupMember – удаление пользователей из группы AD
- Get-ADGroup – получение информации о группе AD
- Get-ADGroupMember – отображение списка пользователей в группе AD
Чтобы использовать эти командлеты, у вас должен быть специальный модуль для взаимодействия с AD — модуль Active Directory для Windows PowerShell. Этот модуль был представлен в Windows Server 2008 R2. В Windows Server 2012/2012R2/2016/2019/2022 он включён по умолчанию на контроллерах домена. Вы можете установить и включить его на клиентских компьютерах (Windows 11, 10, 8.1 и 7) как один из компонентов RSAT: «Как установить и использовать модуль Active Directory PowerShell». На рабочих станциях данный модуль вы можете установить следующей командой:
Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools"
Убедиться в доступности модуля можно следующим образом:
Get-Module -Listavailable
Как видите, модуль ActiveDirectory загружен.
Вы можете получить полный список команд модуля, выполнив следующее:
Get-Command -Module ActiveDirectory
В модуле доступно 147 командлетов, 11 из которых относятся к управлению группами AD.
Get-Command -Module ActiveDirectory -Name "*Group*"
Вот список:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
Обратите внимание: в последующих командах имя группы, если оно состоит из одного слова, необязательно заключать в одинарные или двойные кавычки. Тем не менее, если имя группы состоит из более чем одного слова, то его обязательно заключать в кавычки.
New-ADGroup — Создание новой группы AD
Создадим новую группу в указанном подразделении Active Directory (OU) с помощью команды New-ADGroup:
New-ADGroup "TestADGroup" -Path 'OU=Groups,DC=ds,DC=hackware,DC=ru' -GroupScope Global -PassThru -Verbose
С помощью опции -Description вы можете установить описание группы, а с помощью опции -DisplayName можно изменить отображаемое имя.
Параметром -GroupScope можно задать один из следующих типов групп:
- 0 = DomainLocal
- 1 = Global
- 2 = Universal
Вы можете создать группу рассылки (дистрибуции) следующим образом:
New-ADGroup "TestADGroup-Distr" -Path 'OU=Groups,OU=NY,OU=US,DC=ds,DC=hackware,DC=ru' -GroupCategory Distribution -GroupScope Global -PassThru -Verbose
Add-AdGroupMember — Добавление пользователей в группу AD
Вы можете добавлять пользователей в группу Active Directory с помощью командлета Add-AdGroupMember. Добавьте двух новых пользователей в новую группу:
Add-AdGroupMember -Identity TestADGroup -Members Alex, MiAl
Если список пользователей, добавляемых в группу, довольно велик, вы можете сохранить список учётных записей пользователей в файл CSV, затем импортировать этот файл и добавить каждого пользователя в группу.
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Формат файла CSV должен быть следующим: пользователи должны быть перечислены по одному в строке с пользователями в качестве заголовка столбца.
Чтобы получить всех членов группы (groupX) и добавить их в другую группу (groupY), используйте эту команду:
Get-ADGroupMember "GroupX" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "Group-Y" -Members $_}
Если вам нужно скопировать членов всех подгрупп (рекурсивно) в новую группу, выполните эту команду:
Get-ADGroupMember -Identity "GroupX" -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "GroupY" -Members $_}
Remove-ADGroupMember — Удаление пользователей из группы AD
Чтобы удалить пользователей из группы AD, используйте командлет Remove-ADGroupMember. Удалим двух пользователей из группы:
Remove-ADGroupMember -Identity TestADGroup -Members Alex, MiAl
Подтвердите удаление пользователей:
Если вам нужно удалить пользователей из группы в соответствии со списком пользователей из файла CSV, используйте эту команду:
Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity 'TestADGroup' -members $_.users}
Get-ADGroup — получение информации о группе AD
Получить информацию о группе поможет командлет Get-ADGroup:
Get-ADGroup 'TestADGroup'
Эта команда отображает информацию об основных атрибутах группы (DN, тип группы, имя, SID). Чтобы отобразить значения всех атрибутов группы домена AD, выполните следующую команду:
Get-ADGroup 'TestADGroup' -Properties *
Как видите, теперь отображаются такие атрибуты, как время создания и модификации группы, описание и так далее.
Командлет Get-ADGroup позволяет находить группы по определённому шаблону. Например, вам нужно найти все группы AD, в названии которых содержится фраза admins:
Get-ADGroup -LDAPFilter "(name=*admins*)" | Format-Table
Get-ADGroupMember — отображение списка пользователей в группе AD
Чтобы отобразить список пользователей в группе:
Get-ADGroupMember 'TestADGroup'
Чтобы оставить в результатах только имена пользователей, запустите:
Get-ADGroupMember 'TestADGroup' | Format-Table name
Если в эту группу включены другие группы домена, используйте опцию -Recursive для отображения полного списка членов, включая все вложенные группы.
Get-ADGroupMember ADadmins -Recursive | Format-Table name
Чтобы экспортировать список учётных записей, входящих в определённую группу, в файл CSV (для дальнейшего использования в Excel), выполните следующую команду:
Get-ADGroupMember 'ADadmins' -Recursive| Format-Table samaccountname| Out-File c:\PS\ADadminsList.csv
Чтобы добавить данные учётной записи пользователя AD в текстовый файл, используйте командлет Get-ADUser. Например, помимо учётной записи пользователя вам необходимо отобразить должность и номер телефона пользователя:
Get-ADGroupMember -Identity ADadmins -Recursive | ForEach-Object { Get-ADUser $_ -Properties title, OfficePhone | Select-Object title, OfficePhone }
Подсчитать количество пользователей в группе можно так:
(Get-ADGroupMember -Identity 'domain admins').Count
Чтобы получить список пустых групп в конкретном OU, используйте эту команду:
Get-ADGroup -Filter * -Properties Members -SearchBase "OU=NY,OU-US,DC=ds,DC=hackware,DC=ru" | Where-Object {-not $_.members} | Select-Object Name
Связанные статьи:
- Как установить и использовать Модуль Active Directory для Windows PowerShell (100%)
- Get-ADComputer: поиск сведений о компьютерах и фильтр компьютеров по их свойствам в Active Directory (66.7%)
- Get-ADUser: поиск сведений о пользователях и фильтр пользователей по их свойствам в Active Directory (66.7%)
- Как настроить Windows Server 2022 с помощью PowerShell (50%)
- Как установить Active Directory Domain Services с помощью PowerShell (50%)
- Настройка политики паролей домена в Active Directory (RANDOM - 50%)