Управління групами AD за допомогою PowerShell

У цій статті ми розглянемо можливості PowerShell з управління групами домену Active Directory. Ми розглянемо, як створити нову групу в AD, додати в неї користувачів (або видалити), вивести список користувачів групи і кілька інших корисних дії з доменними групами, які надзвичайно корисні при повсякденному адмініструванні. Для управління групами AD в модулі PowerShell для Active Directory є наступні основні командлети:

зміст:

  • New-ADGroup - створюємо нову групу AD
  • Add-AdGroupMember - додати користувачів до групи AD
  • Remove-ADGroupMember - видалити користувачів з групи
  • Get-ADGroup - отримати інформацію про групу AD
  • Get-ADGroupMember - вивести список користувачів групи AD

Для використання даних командлетів у вашій сесії PowerShell повинен бути завантажений спеціальний модуль взаємодії з AD - Active Directory Module for Windows PowerShell. Даний модуль вперше був представлений в Windows Server 208 R2. У Windows Server 2012 і вище цей модуль включений за замовчуванням. На клієнтських комп'ютерах його можна встановити і включити в якості одного з компонентів RSAT. Перевірити, завантажений чи модуль можна так:

Get-Module -Listavailable

Як ви бачите, модуль ActiveDirectory завантажений. Якщо немає - імпортуйте його командою:

Import-Module activedirectory

Повний список команд модуля можна отримати так:

Get-Command -Module ActiveDirectory

У модулі всього доступно 147 командлетів, з яких з групами можуть працювати 11.

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

Створимо нову групу в зазначеному контейнері (OU) Active Directory за допомогою команди New-ADGroup:

New-ADGroup "TestADGroup" -path 'OU = Groups, OU = Moscow, DC = corp, dc = winitpro, DC = ru' -GroupScope Global -PassThru -Verbose

За допомогою атрибута Description можна задати опис групи, а за допомогою DisplayName змінити ім'я.

параметром GroupScope можна задати один з наступних типів груп:

  • 0 = DomainLocal
  • 1 = Global
  • 2 = Universal

Створити групу поширення можна так:

New-ADGroup "TestADGroup-Distr" -path 'OU = Groups, OU = Moscow, DC = corp, dc = winitpro, DC = ru' -GroupCategory Distribution -GroupScope Global -PassThru -Verbose

Add-AdGroupMember - додати користувачів до групи AD

Додати користувачів до групи Active Directory можна за допомогою командлета Add-AdGroupMember. Додамо в нову групу двох користувачів:

Add-AdGroupMember -Identity TestADGroup -Members user1, user2

Якщо список користувачів, яких потрібно додати в групу досить великий, можна зберегти список облікових записів в CSV файл, потім імпортувати цей файл і додати кожного користувача в групу.

Формат CSV файлу такий (список користувачів по одному в рядку, ім'я стовпця - users)

Import-CSV. \ Users.csv -Header users | ForEach-Object Add-AdGroupMember -Identity 'TestADGroup' -members $ _. Users

Щоб отримати всіх членів однієї групи (groupA) і додати їх в іншу групу (groupB), скористайтесь такою командою:

Get-ADGroupMember "GroupA" | Get-ADUser | ForEach-Object Add-ADGroupMember -Identity "Group-B" -Members $ _

У тому випадку, якщо потрібно скопіювати в нову групу і членів всіх вкладених груп (рекурсивно), потрібно скористатися такою командою:

Get-ADGroupMember -Identity "GroupA" -Recursive | Get-ADUser | ForEach-Object Add-ADGroupMember -Identity "GroupB" -Members $ _

Remove-ADGroupMember - видалити користувачів з групи

Для видалення користувачів з групи AD потрібно використовувати командує Remove-ADGroupMember. Видалимо з групи двох користувачів:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

Підтвердіть видалення користувачів з групи:

Якщо потрібно видалити з групи користувачів за списком з 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' | ft name

Якщо до цієї групи включені інші групи домену, щоб вивести повний список членів, в тому числі всіх вкладених груп, скористайтеся параметром Recursive.

Get-ADGroupMember 'server-admins' -recursive | ft name

Щоб вивантажити список облікових записів, що складаються в певній групі в CSV файл (для подальшого використання в Excel), виконайте таку команду:

Get-ADGroupMember 'server-admins' -recursive | ft samaccountname | Out-File c: \ ps \ admins.csv

Щоб додати в текстовий файл дані облікових записів користувачів в AD, скористаємося Командлети Get-ADUser. Наприклад, крім облікового запису потрібно вивести посаду і телефон користувача групи:

Get-ADGroupMember -Identity 'server-admins' -recursive | foreach Get-ADUser $ _ -properties title, OfficePhone | Select-Object title, OfficePhone

Порахувати кількість користувачів в групі можна так:

(Get-ADGroupMember -Identity 'domain admins'). Count

Виявилося, що в групі "domain admins" у нас складається 7 облікових записів адміністраторів.

Щоб знайти список порожніх груп в певному OU, скористайтеся такою командою:

Get-ADGroup -Filter * -Properties Members -searchbase "OU = Moscow, DC = corp, dc = winitpro, DC = ru" | where -not $ _. members | select Name