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 のレプリケーションとトポロジを管理するためのコマンドレットの詳細を説明し、いくつかの例を示します。 概要については、「Windows PowerShell を使用した Active Directory レプリケーションおよびトポロジ管理の概要 (レベル 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 AD サブネット情報を返します
Get-ADReplicationUpToDatenessVectorTable ドメイン コントローラーの UTD ベクターを返します
Get-ADTrust ドメイン間信頼またはフォレスト間信頼に関する情報を返します
New-ADReplicationSite 新しいサイトを作成します
New-ADReplicationSiteLink 新しいサイト リンクを作成します
New-ADReplicationSiteLinkBridge 新しいサイト リンク ブリッジを作成します
New-ADReplicationSubnet 新しい AD サブネットを作成します
Remove-ADReplicationSite サイトを削除します
Remove-ADReplicationSiteLink サイト リンクを削除します
Remove-ADReplicationSiteLinkBridge サイト リンク ブリッジを削除します
Remove-ADReplicationSubnet AD サブネットを削除します
Set-ADReplicationConnection 接続を変更します
Set-ADReplicationSite サイトを変更します
Set-ADReplicationSiteLink サイト リンクを変更します
Set-ADReplicationSiteLinkBridge サイト リンク ブリッジを変更します
Set-ADReplicationSubnet AD サブネットを変更します
Sync-ADObject 単一オブジェクトのレプリケーションを強制します

これらのコマンドレットのほとんどは、Repadmin.exe を基に作成されています。 上記の表にない他のコマンドレットは、ダイナミック アクセス制御やグループの管理されたサービス アカウントのような機能を扱います。

すべての Active Directory Windows PowerShell コマンドレットの一覧を取得するには、次のコマンドを実行します。

Get-Command -module ActiveDirectory

すべての Active Directory Windows PowerShell コマンドレットの引数の一覧については、ヘルプを参照してください。 例:

Get-Help New-ADReplicationSite

ヘルプ ファイルをダウンロードしてインストールするには、Update-Help コマンドレットを使用します。

レプリケーションとメタデータ

Repadmin.exe は、Active Directory レプリケーションの正常性と一貫性を検証します。 Repadmin.exe には簡単なデータ操作オプションがあり、たとえば、いくつかの引数では CSV 出力をサポートしていますが、自動処理を行うには、一般にテキスト ファイル出力を通じた解析が必要でした。 Windows PowerShell の Active Directory モジュールが提供するオプションにより、返されるデータを完全に制御できるようになりました。これを行うには、以前はスクリプトを作成するか、サードパーティ製のツールを使用する必要がありました。

さらに、次のコマンドレットでは、新しいパラメーター セットである TargetScope、および EnumerationServer が実装されています。

  • Get-ADReplicationFailure

  • Get-ADReplicationPartnerMetadata

  • Get-ADReplicationUpToDatenessVectorTable

Target 引数は、Scope 引数で指定されたターゲット サーバー、サイト、ドメイン、またはフォレストを識別する文字列のコンマ区切り一覧を受け入れます。 アスタリスク (*) を使用して、指定されたスコープ内のすべてのサーバーを表すこともできます。 スコープが指定されていない場合、現在のユーザーのフォレスト内にあるすべてのサーバーを表します。 Scope 引数は検索の範囲を指定します。 指定できる値は、ServerSiteDomain、および Forest です。 EnumerationServer は、Target および Scope で指定されたドメイン コントローラーの一覧を列挙するサーバーを指定します。 Server 引数と同じように動作し、指定したサーバーで Active Directory Web サービスが実行されている必要があります。

コマンドレットの概要を説明するために、いくつかのサンプル シナリオを通じて repadmin.exe では実行できない機能を示します。これらの例から、コマンドレットで実行できる管理操作を把握することができます。 特定の使用上の要件については、コマンドレットのヘルプを参照してください。

Get-ADReplicationAttributeMetadata

このコマンドレットは、repadmin.exe /showobjmeta と似ています。 属性の変更日時、発信元のドメイン コントローラー、バージョンおよび USN 情報、属性データなどのレプリケーション メタデータを返すことができます。 このコマンドレットは、変更が発生した場所と時間を監査するのに役立ちます。

Repadmin とは異なり、Windows PowerShell では検索と出力を柔軟に制御することができます。 たとえば、Domain Admins オブジェクトのメタデータを、読みやすい順序に並べた一覧として出力できます。

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 コマンドレットですべてのグループなどのフィルターを使用し、パイプラインで結果を渡して、特定の日付と組み合わせます。 パイプラインは、複数のコマンドレット間でデータを渡すときに使用するチャネルです。 2012 年 1 月 13 日に何らかの方法で変更されたグループをすべて表示するには、次のコマンドを実行します。

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.

特定の AD 論理サイトのすべてのサーバーを、最も重要なデータのみが読みやすい順序で表示される表形式で返すには、次のコマンドを実行します。

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

この 2 つのコマンドレットは、ドメイン コントローラーの最新の状態に関する情報を返します。これには、保留中のレプリケーションやバージョン ベクターの情報が含まれます。

Sync-ADObject

このコマンドレットは、Repadmin.exe /replsingleobject を実行した場合と似ています。 特に問題を修正するために、帯域外レプリケーションが必要な変更を行う際に役立ちます。

たとえば、誰かが CEO のユーザー アカウントを削除してしまい、Active Directory のごみ箱を使用して復元した場合、直ちにすべてのドメイン コントローラーにそれをレプリケートする必要があります。 その際は、変更されている他のすべてのオブジェクトのレプリケーションは適用しないでおく必要があります。WAN リンクに過剰な負荷がかかるのを避けるため、レプリケーション スケジュールが設定されているためです。

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 は、サイト、サイト リンク、サイト リンク ブリッジ、および接続のようなレプリケーション トポロジに関する情報を返すには便利ですが、変更を加えるための包括的な引数のセットが用意されていません。 実際、AD DS トポロジを作成および変更する管理者向けに特化して設計された、スクリプトが実行可能な付属の Windows ユーティリティはこれまで存在しませんでした。 Active Directory が普及し、非常に多くのカスタマー環境で利用されるようになったことで、Active Directory の論理情報を一括で変更するニーズが高まっています。

たとえば、新しいブランチ オフィスを迅速に展開した後に、他のオフィスとの統合作業だけでなく、物理的な場所、ネットワークの変更、および新しいキャパシティ要件に基づいて、サイトに多数の変更を加えることが必要になる場合があります。 このような場合、Dssites.msc や Adsiedit.msc を使用して変更を加える代わりに、変更作業を自動化することができます。 これは、ネットワークおよび施設のチームから提供されたスプレッドシート形式のデータを使用する場合に特に役立ちます。

Get-Adreplication\* コマンドレットは、レプリケーション トポロジに関する情報を返し、パイプラインを使用して Set-Adreplication\* コマンドレットに一括でデータを渡すのに役立ちます。 Get コマンドレットはデータを変更しません。データの表示のみを行うか、または Windows PowerShell セッション オブジェクトを作成し、パイプラインを使用して Set-Adreplication\* コマンドレットに渡すことができます。 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.

カスタムのレプリケーション間隔とサイト コストを使用して、既存の 2 つのサイト間に新しいサイト リンクを作成します。

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.

参照

Introduction to Active Directory Replication and Topology Management Using Windows PowerShell (Level 100)