Поделиться через


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).

  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

Снимок экрана: выходные данные метаданных объекта

Данные также можно упорядочить в виде таблицы, как они выводятся программой 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

Снимок экрана: просмотр всех групп, измененных в некотором порядке 13 января 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

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

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

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

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

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}

Снимок экрана, на котором показано, как реплицировать удаленную учетную запись из корзины Active Directory ко всем контроллерам домена без принудительной репликации всех внесенных изменений объекта.

Топология

Хотя программа 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

Снимок экрана: интерфейс Блокнота.

Снимок экрана: создание новых сайтов с помощью CSV-файла.

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

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

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

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

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

расширенное управление с помощью PowerShell

Внимание

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

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

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

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

См. также

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