Advanced Active Directory Replication and Topology Management Using Windows PowerShell (Level 200)
В этом разделе подробно описаны командлеты репликации и управления топологией AD DS и дополнительные примеры. Вводные сведения см. в разделе Introduction to Active Directory Replication and Topology Management Using Windows PowerShell (Level 100).
Введение
В следующей таблице перечислены командлеты репликации и топологии, добавленные в модуль 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
Данные также можно упорядочить в виде таблицы, как они выводятся программой repadmin:
Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-table -wrap
Кроме того, можно получить метаданные для всего класса объектов, направив выходные данные командлета 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
Дополнительные сведения о других операциях 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
Чтобы найти все объекты, восстановленные принудительно с помощью резервной копии состояния системы в домене, на основе полученной искусственно новой версии, выполните указанную ниже команду.
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
Чтобы отправить все метаданные пользователей в файл 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
Так выглядят сведения о последней попытке внутренней репликации контроллера домена и репликации его партнеров в табличном формате:
Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com | format-table lastreplicationattempt,lastreplicationresult,partner -auto
Чтобы связаться со всеми контроллерами домена в лесу и получить сведения о тех из них, при последней попытке репликации которых произошел сбой по какой-либо причине, выполните указанную ниже команду:
Get-ADReplicationPartnerMetadata -target * -scope server | where {$_.lastreplicationresult -ne "0"} | ft server,lastreplicationattempt,lastreplicationresult,partner -auto
Get-ADReplicationFailure
С помощью этого командлета можно получать информацию о последних ошибках репликации. Он аналогичен команде Repadmin.exe /showreplsum, но также обеспечивает более эффективный контроль благодаря среде Windows PowerShell.
Например, можно вернуть последние сбои контроллера домена и партнеры, к ним не удалось связаться:
Get-ADReplicationFailure dc1.corp.contoso.com
Чтобы получить таблицу с наиболее важными сведениями о всех серверах в определенном логическом сайте Active Directory, упорядоченными для более удобного просмотра, выполните указанную ниже команду:
Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto
Get-ADReplicationQueueOperation и Get-ADReplicationUpToDatenessVectorTable
Оба этих командлета возвращают дополнительные аспекты контроллера домена и актуальны ли они, в том числе ожидающие репликации и векторные сведения о версии.
Sync-ADObject
Этот командлет аналогичен команде Repadmin.exe /replsingleobject. Он очень полезен при внесении изменений, требующих отдельной репликации, особенно при устранении неполадок.
Например, если кто-то удалил учетную запись генерального директора, а затем восстановил ее с помощью корзины Active Directory, возможно, ее необходимо немедленно реплицировать на все контроллеры домена. Вы также, вероятно, хотите сделать это без принудительной репликации всех внесенных изменений объекта; В конце концов, поэтому у вас есть расписание репликации, чтобы избежать перегрузки каналов глобальной сети.
Get-ADDomainController -filter * | foreach {Sync-ADObject -object "cn=tony wang,cn=users,dc=corp,dc=contoso,dc=com" -source dc1 -destination $_.hostname}
Топология
Хотя программа Repadmin.exe — это эффективное средство для получения информации о топологии репликации, включая сайты, связи сайтов, мосты связей сайтов и подключения, она не предоставляет достаточно широкий набор аргументов для внесения изменений. По сути, в Windows до сих пор не было встроенной программы с поддержкой сценариев, предназначенной специально для создания и изменения топологии доменных служб Active Directory администраторами. С распространением служб Active Directory в средах миллионов клиентов потребность в массовом изменении логической информации Active Directory стала очевидной.
Например, после быстрого развертывания новых филиалов, сопровождающегося объединением существующих, может потребоваться внести сотни изменений в сайты в соответствии с их физическим расположением, характеристиками сети и новыми требованиями к емкости. Эти изменения можно внести не с помощью средств Dssites.msc и Adsiedit.msc, а автоматически. Это особенно удобно, если вам приходится действовать на основе таблиц с данными, предоставленными группами сетевой инфраструктуры и технического обслуживания.
Командлеты Get-Adreplication\* возвращают сведения о топологии репликации и полезны для конвейерирования в командлеты Set-Adreplication\* в массовом режиме. Получение командлетов не изменяет данные, они отображают только данные или создают объекты сеансов Windows PowerShell, которые можно конвейерировать в командлеты Set-Adreplication\* . Командлеты New и Remove полезны для создания и удаления объектов топологии Active Directory.
Например, можно создавать сайты с помощью файла CSV:
Import-Csv -path C:\newsites.csv | new-adreplicationsite
Чтобы создать связь между двумя существующими сайтами с настраиваемым интервалом репликации и стоимостью сайтов, выполните указанную ниже команду.
New-ADReplicationSiteLink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15
Чтобы найти каждый сайт в лесу и заменить его атрибут Options на флаг, включающий уведомления об изменениях между сайтами, с целью максимально быстрой репликации со сжатием, выполните указанную ниже команду.
Get-ADReplicationSiteLink -filter * | set-adobject -replace @{options=$($_.options -bor 1)}
Внимание
Чтобы отключить сжатие для этих связей сайтов, задайте параметр -bor 5.
Чтобы найти все сайты с отсутствующими назначениями подсетей с целью сверки списка фактических подсетей для этих расположений, выполните указанную ниже команду.
Get-ADReplicationSite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name
См. также
Общие сведения о репликации и топологии Active Directory с помощью Windows PowerShell (уровень 100)