Моніторинг реплікації Active Directory за допомогою PowerShell

Більшість адміністраторів AD для контролю репликацией в Active Directory використовують консольні утиліти repadmin (З'явилася ще в Windows Server 2003) і replmon (Потрібно копіювати з Support Tool для WS2003). Microsoft в Windows Server 2012 додала ряд командлетів PowerShell, які можна використовувати для управління і перевірки статусу реплікації у лісі Active Directory. У цій статті ми розглянемо основні корисні командлети PoSh, які може використовувати адміністратор AD для контролю за своєю інфраструктурою.

Командлети для управління і моніторингу реплікації AD входять до складу модуля Active Directory для PowerShell. Його можна включити після установки RSAT. Для імпорту модуля в сесію PowerShell потрібно виконати команду:

Import-Module ActiveDirectory

Примітка. Модуль Active Directory for PowerShell автоматично імпортується на контролерах домену з Windows Server 2012 R2 і вище.

Повний список командлетів, пов'язаних з реплікацією, в модулі activedirectory можна вивести так:

get-command -module activedirectory -name * ADReplicat *

Для збору інформації про помилки редуплікаціі на конкретному контролері домену, потрібно використовувати команддет Get-ADReplicationFailure:

Get-ADReplicationFailure -Target DC01

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

Можна опитати відразу кілька DC:

Get-ADReplicationFailure -Target DC01, DC02

В даному випадку видно, що 22 лютого була проблема зв'язку з контролером домену dc02 (link failure), але на даний момент помилка не спостерігається.

Для швидкого отримання статусу реплікації для всіх DC в зазначеному сайті:

Get-ADReplicationFailure -scope site -target Kursk | FT Server, LastError, Partner-Auto

Або відразу все контролери домену в домені або лісі (-Scope Forest):

Get-ADReplicationFailure -Target "winitpro.ru" -Scope Domain

командлет Get-ADReplicationConnection використовується для виведення інформацію про партнерах реплікації для поточного контролера домену.

Get-ADReplicationConnection -Filter *

Якщо потрібно вивести підключення реплікації з конкретним DC, виконайте команду:

Get-ADReplicationConnection -Filter ReplicateToDirectoryServer -eq "DC02"

Для запуску примусової синхронізації конкретного об'єкта між контролерами домену, використовується командлет Sync-ADObject. Наприклад, візьмемо ситуацію, коли якийсь об'єкт AD видалений, поміщений в кошик AD і згодом відновлений. Відразу після відновлення об'єкта можна виконати примусову реплікацію відновленого об'єкта на всі контролери домену (список DC можна отримати Командлети Get-ADDomainController) за допомогою командлета Sync-ADObject:

Get-ADDomainController -filter * | foreach Sync-ADObject -Object "cn = Andrey Petrov, cn = Users, dc = winitpro, dc = ru" -source DC01 -Destination $ _. hostname

командлет Get-ADReplicationPartnerMetadata дозволяє отримати інформацію про метаданих реплікації між DC та партнерами. Наприклад, для отримання з усіх DC інформації про час останньої спроби виконати реплікацію з партнером і часу останньої успішної реплікації, наберіть:

Get-ADReplicationPartnerMetadata -Target "$ env: userdnsdomain" -Scope Domain | Select-Object Server, LastReplicationAttempt, LastReplicationSuccess, Partner

Можна отримати статус реплікації конкретного об'єкта:

Get-ADReplicationAttributeMetadata -Object "CN = Maxim Vetrov, OU = Users, DC = winitpro, DC = ru" -Server DC01

За допомогою командлета Get-ADReplicationQueueOperation можна отримати список очікують операцій реплікації на конкретному сервері.

командлет Get-ADReplicationUpToDatenessVectorTable дозволяє отримати список значень USN для партнерів по реплікації:

Get-ADReplicationUpToDatenessVectorTable * | ft Partner, Server, UsnFilter

Таким чином, PowerShell надає потужний і зручний інструмент для моніторингу і вирішення проблем з реплікацією в лісі AD, який на 100% може замінити функціонал утиліти repadmin з моніторингу та управління реплікацією в Active Directory.