Advanced Active Directory Replication and Topology Management Using Windows PowerShell (Level 200)

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

В этом разделе подробно описаны командлеты управления реплика ad DS и топологии, а также дополнительные примеры. Вводные сведения см. в разделе Introduction to Active Directory Replication and Topology Management Using Windows PowerShell (Level 100).

  1. Введение

  2. Репликация и метаданные

  3. Get-ADReplicationAttributeMetadata

  4. Get-ADReplicationPartnerMetadata

  5. Get-ADReplicationFailure

  6. Get-ADReplicationQueueOperation и Get-ADReplicationUpToDatenessVectorTable

  7. Sync-ADObject

  8. Топология

Введение

В следующей таблице перечислены командлеты реплика и топологии, добавленные в модуль Active Directory Windows PowerShell:

Командлет Описание
Get-ADReplicationAttributeMetadata Возвращает метаданные репликации атрибутов для объекта.
Get-ADReplicationConnection Возвращает сведения об объекте подключения к контроллеру домена.
Get-ADReplicationFailure Возвращает сведения о последнем сбое репликации для домена контроллера.
Get-ADReplicationPartnerMetadata Возвращает конфигурацию репликации для контроллера домена.
Get-ADReplicationQueueOperation Возвращает текущую невыполненную часть очереди репликации.
Get-ADReplicationSite Возвращает сведения о сайте.
Get-ADReplicationSiteLink Возвращает сведения о связи сайта.
Get-ADReplicationSiteLinkBridge Возвращает сведения о мосте связей сайтов.
Get-ADReplicationSubnet Возвращает сведения о подсети Active Directory.
Get-ADReplicationUpToDatenessVectorTable Возвращает сведения о векторе UTD для контроллера домена.
Get-ADTrust Возвращает сведения об отношении доверия между доменами или лесами.
New-ADReplicationSite Создает сайт.
New-ADReplicationSiteLink Создает связь сайтов.
New-ADReplicationSiteLinkBridge Создает мост связей сайтов.
New-ADReplicationSubnet Создает подсеть Active Directory.
Remove-ADReplicationSite Удаляет сайт.
Remove-ADReplicationSiteLink Удаляет связь сайтов.
Remove-ADReplicationSiteLinkBridge Удаляет мост связей сайтов.
Remove-ADReplicationSubnet Удаляет подсеть Active Directory.
Set-ADReplicationConnection Изменяет подключение.
Set-ADReplicationSite Изменяет сайт.
Set-ADReplicationSiteLink Изменяет связь сайтов.
Set-ADReplicationSiteLinkBridge Изменяет мост связей сайтов.
Set-ADReplicationSubnet Изменяет подсеть Active Directory
Sync-ADObject Принудительная репликация отдельного объекта.

Большинство этих командлетов основаны на программе Repadmin.exe. Другие командлеты (не приведенные в списке) используют такие компоненты, как динамический контроль доступа и групповые управляемые учетные записи служб.

Чтобы просмотреть весь список командлетов Windows PowerShell для Active Directory, выполните указанную ниже команду.

Get-Command -module ActiveDirectory

Чтобы просмотреть весь список аргументов командлетов Windows PowerShell для Active Directory, обратитесь к справке. Например:

Get-Help New-ADReplicationSite

Загрузка и установка файлов справки с помощью командлета Update-Help

Репликация и метаданные

Программа Repadmin.exe проверяет состояние и согласованность репликации Active Directory. Repadmin.exe обеспечивает простые средства для манипуляции с данными, например некоторые аргументы поддерживают вывод данных в формате CSV. Но для автоматизации, как правило, требуется разбор содержимого текстовых файлов. Модуль Active Directory для Windows PowerShell — это первая попытка предложить вариант, позволяющий осуществлять реальный контроль над возвращаемыми данными; До этого вам пришлось создавать скрипты или использовать сторонние средства.

Кроме того, в следующих командлетах реализован новый набор параметров, включающий параметры Target, Scope и EnumerationServer:

  • Get-ADReplicationFailure

  • Get-ADReplicationPartnerMetadata

  • Get-ADReplicationUpToDatenessVectorTable

Аргумент Target принимает разделенный запятыми список строк, которые определяют целевые серверы, сайты, домены или леса, указанные в аргументе Scope. Допускается использование звездочки (*), которая означает все серверы в указанной области. Если область не указано, он подразумевает все серверы в лесу текущего пользователя. Аргумент Scope определяет диапазон поиска. Допустимые значения: Server, Site, Domain и Forest. Аргумент EnumerationServer определяет сервер, который перечисляет список контроллеров домена, указанных в аргументах Target и Scope. Он работает так же, как аргумент Server, и требует, чтобы на указанном сервере была запущена веб-служба Active Directory.

Чтобы ввести командлеты, ниже приведены некоторые примеры сценариев, показывающих возможности, которые невозможно repadmin.exe; вооруженные этими иллюстрациями административные возможности становятся очевидными. Конкретные требования для использования командлета можно найти в справке по нему.

Get-ADReplicationAttributeMetadata

Этот командлет аналогичен команде repadmin.exe /showobjmeta. Он позволяет возвращать метаданные репликации, например время изменения атрибута, исходный контроллер домена, версию и информацию USN, а также данные атрибута. Этот командлет полезен для отслеживания времени и места внесения изменения.

В отличие от программы Repadmin, среда Windows PowerShell предоставляет гибкий контроль над поиском и выходными данными. Например, метаданные объекта "Администраторы домена" могут выводиться в виде упорядоченного читаемого списка:

Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-list

Screenshot that shows the metadata output of the Domain Admins Object ordered as a readable list.

Данные также можно упорядочить в виде таблицы, как они выводятся программой repadmin:

Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-table -wrap

Screenshot that shows the data arranged to look like repadmin in a table.

Кроме того, можно получить метаданные для всего класса объектов, направив выходные данные командлета Get-Adobject в фильтр по конвейеру. Например, таким образом можно получить данные по всем группам за определенную дату. Конвейер — это канал, используемый несколькими командлетами для обмена данными. Чтобы просмотреть все группы, измененные каким-либо образом 13 января 2012 года, выполните указанную ниже команду.

Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.lastoriginatingchangetime -like "*1/13/2012*" -and $_.attributename -eq "name"} | format-table object

Screenshot that shows how to see all groups modified in some fashion on January 13th, 2012.

Дополнительные сведения о других операциях Windows PowerShell с конвейерами см. в разделе Конвейерная передача и конвейер в Windows PowerShell.

Чтобы узнать, в какие группы входит пользователь Tony Wang и когда каждая из этих групп была изменена в последний раз, выполните указанную ниже команду.

Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | where-object {$_.attributevalue -like "*tony wang*"} | format-table object,LastOriginatingChangeTime,version -auto

Screenshot that shows how to find out every group that has Tony Wang as a member and when the group was last modified.

Чтобы найти все объекты, восстановленные принудительно с помощью резервной копии состояния системы в домене, на основе полученной искусственно новой версии, выполните указанную ниже команду.

Get-ADObject -filter 'objectclass -like "*"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.version -gt "100000" -and $_.attributename -eq "name"} | format-table object,LastOriginatingChangeTime

Screenshot that shows how to find all objects authoritatively restored using a system state backup in the domain, based on their artificially high version.

Чтобы отправить все метаданные пользователей в файл CSV для дальнейшего анализа в Microsoft Excel, выполните указанную ниже команду.

Get-ADObject -filter 'objectclass -eq "user"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | export-csv allgroupmetadata.csv

Get-ADReplicationPartnerMetadata

Этот командлет возвращает сведения о конфигурации и состоянии репликации для контроллера домена, которые можно использовать для мониторинга, инвентаризации или устранения неполадок. В отличие от программы Repadmin.exe, среда Windows PowerShell позволяет просматривать только необходимые данные в удобном формате.

Например, так выглядит состояние репликации отдельного контроллера домена в удобном для восприятия формате:

Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com

Screenshot that shows how to get the readable replication state of a single domain controller.

Так выглядят сведения о последней попытке внутренней репликации контроллера домена и репликации его партнеров в табличном формате:

Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com | format-table lastreplicationattempt,lastreplicationresult,partner -auto

Screenshot that shows the last time a domain controller replicated inbound and its partners, in a table format.

Чтобы связаться со всеми контроллерами домена в лесу и получить сведения о тех из них, при последней попытке репликации которых произошел сбой по какой-либо причине, выполните указанную ниже команду:

Get-ADReplicationPartnerMetadata -target * -scope server | where {$_.lastreplicationresult -ne "0"} | ft server,lastreplicationattempt,lastreplicationresult,partner -auto

Screenshot that shows how to contact all domain controllers in the forest and display any whose last attempted replication failed for any reason.

Get-ADReplicationFailure

С помощью этого командлета можно получать информацию о последних ошибках репликации. Он аналогичен команде Repadmin.exe /showreplsum, но также обеспечивает более эффективный контроль благодаря среде Windows PowerShell.

Например, можно вернуть последние сбои контроллера домена и партнеры, к ним не удалось связаться:

Get-ADReplicationFailure dc1.corp.contoso.com

Screenshot that shows how you can return a domain controller's most recent failures and the partners he failed contacting.

Чтобы получить таблицу с наиболее важными сведениями о всех серверах в определенном логическом сайте Active Directory, упорядоченными для более удобного просмотра, выполните указанную ниже команду:

Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto

Screenshot that shows how to return a table view for all servers in a specific AD logical site, ordered for easier viewing and containing only the most critical data.

Get-ADReplicationQueueOperation и Get-ADReplicationUpToDatenessVectorTable

Оба этих командлета возвращают дополнительные аспекты контроллера домена и актуальны ли они, в том числе ожидающие реплика и векторные сведения о версии.

Sync-ADObject

Этот командлет аналогичен команде Repadmin.exe /replsingleobject. Он очень полезен при внесении изменений, требующих отдельной репликации, особенно при устранении неполадок.

Например, если кто-то удалил учетную запись генерального директора, а затем восстановил ее с помощью корзины Active Directory, возможно, ее необходимо немедленно реплицировать на все контроллеры домена. Вы также, вероятно, хотите сделать это, не заставляя реплика из всех внесенных изменений объекта; в конце концов, поэтому у вас есть расписание реплика tion - чтобы избежать перегрузки ссылок глобальной сети.

Get-ADDomainController -filter * | foreach {Sync-ADObject -object "cn=tony wang,cn=users,dc=corp,dc=contoso,dc=com" -source dc1 -destination $_.hostname}

Screenshot that shows how to replicate a deleted account from the Active Directory Recycle Bin to all domain controllers without forcing replication of all the other object changes made.

Топология

Хотя программа Repadmin.exe — это эффективное средство для получения информации о топологии репликации, включая сайты, связи сайтов, мосты связей сайтов и подключения, она не предоставляет достаточно широкий набор аргументов для внесения изменений. По сути, в Windows до сих пор не было встроенной программы с поддержкой сценариев, предназначенной специально для создания и изменения топологии доменных служб Active Directory администраторами. С распространением служб Active Directory в средах миллионов клиентов потребность в массовом изменении логической информации Active Directory стала очевидной.

Например, после быстрого развертывания новых филиалов, сопровождающегося объединением существующих, может потребоваться внести сотни изменений в сайты в соответствии с их физическим расположением, характеристиками сети и новыми требованиями к емкости. Эти изменения можно внести не с помощью средств Dssites.msc и Adsiedit.msc, а автоматически. Это особенно удобно, если вам приходится действовать на основе таблиц с данными, предоставленными группами сетевой инфраструктуры и технического обслуживания.

Командлеты Get-Ad реплика tion\* возвращают сведения о топологии реплика и полезны для передачи данных в командлеты Set-Ad реплика tion\* в массовом режиме. Получение командлетов не изменяет данные, они отображают только данные или создают объекты сеансов Windows PowerShell, которые можно конвейерировать в командлеты Set-Ad реплика tion\* . Командлеты New и Remove полезны для создания и удаления объектов топологии Active Directory.

Например, можно создавать сайты с помощью файла CSV:

Import-Csv -path C:\newsites.csv | new-adreplicationsite

Screenshot that shows the Notepad interface.

Screenshot that shows how to create new sites using a CSV file.

Чтобы создать связь между двумя существующими сайтами с настраиваемым интервалом репликации и стоимостью сайтов, выполните указанную ниже команду.

New-ADReplicationSiteLink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15

Screenshot that shows create a new site link between two existing sites with a custom replication interval and site cost.

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

Get-ADReplicationSiteLink -filter * | set-adobject -replace @{options=$($_.options -bor 1)}

advanced management with powershell

Внимание

Чтобы отключить сжатие для этих связей сайтов, задайте параметр -bor 5.

Чтобы найти все сайты с отсутствующими назначениями подсетей с целью сверки списка фактических подсетей для этих расположений, выполните указанную ниже команду.

Get-ADReplicationSite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name

Screenshot that shows how to find all sites missing subnet assignments, in order to reconcile the list with the actual subnets of those locations.

См. также

Общие сведения о репликации и топологии Active Directory с помощью Windows PowerShell (уровень 100)