このトピックでは、AD DS のレプリケーションとトポロジを管理するためのコマンドレットの詳細を説明し、いくつかの例を示します。 概要については、「Windows PowerShell を使用した Active Directory レプリケーションおよびトポロジ管理の概要 (レベル 100)」を参照してください。
Introduction
次の表に、Active Directory Windows PowerShell モジュールに追加された、レプリケーションおよびトポロジに関するコマンドレットの一覧を示します:
| Cmdlet | Explanation |
|---|---|
| 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 モジュールが提供するオプションにより、返されるデータを完全に制御できるようになりました。これを行うには、以前はスクリプトを作成するか、サードパーティ製のツールを使用する必要がありました。
さらに、次のコマンドレットは、 Target、 Scope、 EnumerationServer の新しいパラメーター セットを実装します。
Get-ADReplicationFailure
Get-ADReplicationPartnerMetadata
Get-ADReplicationUpToDatenessVectorTable
Target 引数は、Scope 引数で指定されたターゲット サーバー、サイト、ドメイン、またはフォレストを識別する文字列のコンマ区切りのリストを受け取ります。 アスタリスク (*) を使用して、指定されたスコープ内のすべてのサーバーを表すこともできます。 スコープが指定されていない場合、現在のユーザーのフォレスト内にあるすべてのサーバーを表します。 Scope 引数は、検索の緯度を指定します。 使用可能な値は、 サーバー、 サイト、 ドメイン、 フォレストです。 EnumerationServer は、ターゲットとスコープで指定されたドメイン コントローラーの一覧を列挙するサーバーを指定します。 これは 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
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 コマンドレットをパイプライン処理し、それを特定の日付と組み合わせることで、オブジェクトのクラス全体のメタデータを取得することもできます。 パイプラインは、複数のコマンドレット間でデータを渡すときに使用するチャネルです。 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
パイプラインを使用した 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
特定の AD 論理サイトのすべてのサーバーを、最も重要なデータのみが読みやすい順序で表示される表形式で返すには、次のコマンドを実行します。
Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto
Get-ADReplicationQueueOperation および Get-ADReplicationUpToDatenessVectorTable
この 2 つのコマンドレットは、ドメイン コントローラーの最新の状態に関する情報を返します。これには、保留中のレプリケーションやバージョン ベクターの情報が含まれます。
Sync-ADObject
このコマンドレットは、 /replsingleobjectRepadmin.exe 実行することに似ています。 特に問題を修正するために、帯域外レプリケーションが必要な変更を行う際に役立ちます。
たとえば、誰かが 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}
Topology
Repadmin.exe は、サイト、サイト リンク、サイト リンク ブリッジ、および接続のようなレプリケーション トポロジに関する情報を返すには便利ですが、変更を加えるための包括的な引数のセットが用意されていません。 実際、AD DS トポロジを作成および変更する管理者向けに特化して設計された、スクリプトが実行可能な付属の Windows ユーティリティはこれまで存在しませんでした。 Active Directory が普及し、非常に多くのカスタマー環境で利用されるようになったことで、Active Directory の論理情報を一括で変更するニーズが高まっています。
たとえば、新しいブランチ オフィスを迅速に展開した後に、他のオフィスとの統合作業だけでなく、物理的な場所、ネットワークの変更、および新しいキャパシティ要件に基づいて、サイトに多数の変更を加えることが必要になる場合があります。 このような場合、Dssites.msc や Adsiedit.msc を使用して変更を加える代わりに、変更作業を自動化することができます。 これは、ネットワークおよび施設のチームから提供されたスプレッドシート形式のデータを使用する場合に特に役立ちます。
Get-Adreplication\* コマンドレットは、レプリケーション トポロジに関する情報を返し、Set-Adreplication\* コマンドレットを一括でパイプライン処理する場合に役立ちます。 Get コマンドレットはデータを変更せず、データのみを表示するか、 Set-Adreplication\* コマンドレットにパイプライン化できる Windows PowerShell セッション オブジェクトを作成します。 New コマンドレットと Remove コマンドレットは、Active Directory トポロジ オブジェクトの作成または削除に役立ちます。
たとえば、CSV ファイルを使用して新しいサイトを作成できます。
Import-Csv -path C:\newsites.csv | new-adreplicationsite
カスタムのレプリケーション間隔とサイト コストを使用して、既存の 2 つのサイト間に新しいサイト リンクを作成します。
New-ADReplicationSiteLink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15
または、フォレスト内のすべてのサイトを検索し、 その Options 属性をフラグに置き換えてサイト間の変更通知を有効にして、圧縮を使用して最大速度でレプリケートします。
Get-ADReplicationSiteLink -filter * | set-adobject -replace @{options=$($_.options -bor 1)}
Important
これらのサイト リンクの圧縮も無効にするには 、-bor 5 を設定します。
サブネットが割り当てられていないサイトをすべて検索し、出力される一覧に基づいて各サイトの場所の実際のサブネットを設定できるようにします。
Get-ADReplicationSite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name
こちらもご覧ください
Windows PowerShell を使用した Active Directory レプリケーションとトポロジ管理の概要 (レベル 100)