Большинство администраторов 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
Полный список командлетов, связанных с репликацией, в модуле 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.