Управление группами 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

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *