Використання модуля Active Directory for PowerShell для адміністрування домену

модуль Active Directory для Windows PowerShell сьогодні є одним із основних засобів адміністрування домену, управління об'єктами в Active Directory, отримання різної інформації про комп'ютери, користувачів, групи. Будь-системний адміністратор Windows повинен вміти користуватися не тільки графічними оснащеннями AD (найчастіше це ADUC - Active Directory Users & Computer), але і Командлети цього модуля PowerShell для виконання повсякденних завдань адміністрування Active Directory. У цій статті ми розглянемо, як встановити модуль RSAT-AD-PowerShell, його базовий функціонал і популярні командлети, які повинні бути корисними при управлінні і роботі з AD.

зміст:

  • Установка модуля Active Directory для PowerShell в Windows Server
  • Установка модуля RSAT-AD-PowerShell в Windows 10
  • Командлети модуля AD для PowerShell
  • Використання модуля RSAT-AD-PowerShell для адміністрування AD

Установка модуля Active Directory для PowerShell в Windows Server

Модуль Active Directory для Windows PowerShell вже вбудований в операційні системи Windows Server (починаючи з Windows Server 2008 R2), але за замовчуванням не активований.

У Windows Server 2016 ви можете включити модуль AD для PoSh в Windows Server 2016 з панелі управління Server Manager (Add Roles and Features -> Features -> Remote Server Administration tools -> Role Administration Tools -> AD DS and AD LDS Tools -> Active Directory module for Windows PowerShell).

Також ви можете встановити модуль з командного рядка за допомогою PowerShell команди:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

Ви можете встановити модуль RSAT-AD-PowerShell не тільки на контролері домену. Підійде будь-який пересічний сервер або навіть робоча станція. На контролерах домену AD модуль встановлюється автоматично при розгортанні ролі ADDS (при підвищенні сервера до DC).

Взаємодія модуля з AD виконується через служба Active Directory Web Services, яка повинна бути встановлена ​​на котролері домену (взаємодія по порту TCP 9389).

Установка модуля RSAT-AD-PowerShell в Windows 10

Ви можете встановити модуль RSAT-AD-PowerShell не тільки на серверах, а й на робочих станціях. Цей модуль входить до складу пакета RSAT (Remote Server Administration Tools), який можна завантажити і встановити вручну в Window 7, Windows 8.1. Після установки RSAT модуль AD дл PowerShell ставиться з панелі управління (Control Panel -> Programs and Features -> Turn Windows features on or off -> Remote Server Administration Tools-> Role Administration Tools -> AD DS and AD LDS Tools).

У Windows 10 1809 і вище пакет RSAT вже вбудований в дистрибутив (як Features on Demand), тому для установки модуля можна скористатися командою:

Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools ~~~~ 0.0.1.0"

Командлети модуля AD для PowerShell

У модулі Active Directory для Windows PowerShell є велика командлетів для взаємодії з AD. У кожній новій версії RSAT їх кількість збільшується (в Windows Server 2016 є 147 командлетів для AD).

Перед використанням командлетів модуля, його потрібно імпортувати в сесію PowerShell (в Windows Server 2012 R2 / Windows 8.1 модуль імпортується автоматично):

Import-Module ActiveDirectory

Якщо у вас на ПК не встановлено модуль, ви можете імпортувати його з контролера домену (потрібні права адміністратора домена) або з іншого комп'ютера:

$ Rs = New-PSSession -ComputerName DC_or_Comp_with_ADPosh
Import-Module -PSsession $ rs -Name ActiveDirectory

Ви можете вивести повний список доступних командлетів за допомогою команди:

Get-Command -module activedirectory

Загальна кількість команд в модулі:

Get-Command -module activedirectory | measure-object

Більшість командлетів модуля RSAT-AD-PowerShell починаються із префікса Get-, Set-або New-.

  • командлети класу Get- використовуються для отримання різної інформації з AD (Get-ADUser - властивості користувачів, Get-ADComputer - параметри комп'ютерів, Get-ADGroupMember - склад груп і т.д.). Для їх виконання не потрібно бути адміністратором домену, будь-який користувач домену може виконувати скрипти PowerShell для отримання значень більшості атрибутів об'єктів AD (окрім захищених, як в прикладі з LAPS).
  • командлети класу Set- служать для зміни параметрів об'єктів в AD, наприклад, ви можете змінити властивості користувача (Set-ADUser), комп'ютера (Set-ADComputer), додати користувача до групи і т.д. Для виконання цих операцій у вашому профілі повинні бути права на об'єкти, які ви хочете змінити (див. Статтю Делегування прав адміністратора в AD).
  • Команди, що починаються з New- дозволяють створити об'єкти AD (створити користувача - New-ADUser, групу - New-ADGroup).
  • командлети Remove- служать для видалення об'єктів AD.

Отримати довідку про будь-якому Командлети можна так:

get-help New-ADComputer

Приклади використання командлетів Active Directory можна вивести так:

(Get-help Set-ADUser) .examples

У PowerShell ISE при наборі параметрів командлетів модуля зручно використовувати спливаючі підказки.

Використання модуля RSAT-AD-PowerShell для адміністрування AD

Розглянемо кілька типових задач адміністратора, які можна виконати за допомогою команд модуля AD для PowerShell.

Корисні приклади використання різних командлетів модуля AD для PowerShell вже описані на сайті. Дотримуйтесь посиланнях за текстом за докладними інструкціями.

New-ADUser: Створення користувача в AD

Для створення нового користувача в AD можна використовувати командлет New-ADUser. Створити користувача можна командою:

New-ADUser -Name "Andrey Petrov" -GivenName "Andrey" -Surname "Petrov" -SamAccountName "apetrov" -UserPrincipalName "[email protected]" -Path "OU = Users, OU = Ufa, DC = winitpro, DC = loc "-AccountPassword (Read-Host -AsSecureString" Input Password ") -Enabled $ true

Більш докладно про команду New-ADUser (в тому числі приклад масового створення облікових записів в домені) читайте в статті .

Get-ADComputer: Отримати інформацію про комп'ютерах домену

Щоб вивести інформацію про комп'ютери в певному OU (ім'я комп'ютера і дата останньої реєстрації в мережі) використовуйте командлет Get-ADComputer:

Get-ADComputer -SearchBase 'OU = Russia, DC = winitpro, DC = ru' -Filter * -Properties * | FT Name, LastLogonDate -Autosize

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

Щоб додати користувачів в існуючу групу безпеки в домені AD, виконайте команду:

Add-AdGroupMember -Identity MskSales -Members apterov, divanov

Вивести список користувачів в групі AD і вивантажити його в файл:

Get-ADGroupMember MskSales -recursive | ft samaccountname | Out-File c: \ script \ export_users.csv

Більш докладно про управління групами AD з PowerShell.

Set-ADAccountPassword: Скидання пароля користувача в AD

Щоб скинути пароль користувача в AD з PowerShell, виконайте:

Set-ADAccountPassword apterov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "P @ ssw0rd1" -Force -Verbose) -PassThru

Блокування / розблокування користувача

Відключити обліковий запис:

Disable-ADAccount apterov

Включити обліковий запис:

Enable-ADAccount apterov

Розблокувати акаунт після блокування пральний політикою:

Unlock-ADAccount apterov

Search-ADAccount: Пошук неактивних комп'ютерів в домені

Щоб знайти і заблокувати в домені все комп'ютери, які не реєструвалися в мережі більше 100 днів, скористайтеся Командлети Search-ADAccount:

$ Timespan = New-Timespan -Days 100
Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan $ timespan | Disable-ADAccount

New-ADOrganizationalUnit: Створити структуру OU в AD

Щоб швидко створити типову структури Organizational Unit в AD, можна скористатися скриптом PowerShell. Припустимо, нам потрібно створити кілька OU ті міста, в яких створити типові контейнери. Вручну через графічну консоль ADUC таку структуру створювати досить довго, а модуль AD для PowerShell дозволяє розв'язати таке завдання за кілька секунд (не рахуючи час на написання скрипта):

$ Fqdn = Get-ADDomain
$ Fulldomain = $ fqdn.DNSRoot
$ Domain = $ fulldomain.split ( ".")
$ Dom = $ domain [0]
$ Ext = $ domain [1]
$ Sites = ( "SPB", "MSK", "Sochi")
$ Services = ( "Users", "Admins", "Computers", "Servers", "Contacts")
$ FirstOU = "Russia"
New-ADOrganizationalUnit -Name $ FirstOU -Description $ FirstOU -Path "DC = $ Dom, DC = $ EXT" -ProtectedFromAccidentalDeletion $ false
foreach ($ S in $ Sites)

New-ADOrganizationalUnit -Name $ S -Description "$ S" -Path "OU = $ FirstOU, DC = $ Dom, DC = $ EXT" -ProtectedFromAccidentalDeletion $ false
foreach ($ Serv in $ Services)

New-ADOrganizationalUnit -Name $ Serv -Description "$ S $ Serv" -Path "OU = $ S, OU = $ FirstOU, DC = $ Dom, DC = $ EXT" -ProtectedFromAccidentalDeletion $ false


Після виконання скрипта у нас в AD з'явилася така структура OU.

Для перенесення об'єктів між контейнерами AD можна використовувати командлет Move-ADObject:

$ TargetOU = "OU = Buhgalteriya, OU = Computers, DC = corp, DC = winitpro, DC = ru"
Get-ADComputer -Filter 'Name -like "BuhPC *"' | Move-ADObject -TargetPath $ TargetOU

Get-ADReplicationFailure: Перевірка реплікації в AD

За допомогою командлета Get-ADReplicationFailure можна перевірити стан реплікації між контролерами домена AD:

Get-ADReplicationFailure -Target DC01, DC02

Отримати інформацію про всі DC в домені за допомогою командлета Get-AdDomainController:

Get-ADDomainController -filter * | select hostname, IPv4Address, IsGlobalCatalog, IsReadOnly, OperatingSystem | format-table -auto

Отже, в цій статті ми розглянули базові можливості і особливості використання модуля AD для PowerShell для адміністрування AD. Сподіваюся, ця стаття підштовхне вас до подальшого дослідження можливостей цього модуля і автоматизації більшості задач управління AD.