1

現在、コマンド repadmin /syncall /e [自分の dn] および repadmin /syncall /eP [自分の dn] を使用して、ドメイン コントローラー間のレプリケーションを強制しています。ドメイン コントローラーを同期するために powershell を使用したいと考えていますが、オンラインで表示されるすべての情報は、powershell 内から単に repadmin を呼び出す必要があることを示しています。repadmin /syncall に相当する純粋な PowerShell はありますか?

4

3 に答える 3

2

私は昨年、これを正確に行うためにこの純粋なpowershell関数/スクリプトを書きましたが、ここに投稿された他のPSスニペットの回答がそこから来たようです(褒め言葉と見なします)。それが不可能であると言っている他の投稿は、この ADSI 呼び出しは絶対に正しくありません。実際、私のスクリプトは Repadmin /syncall と同じように完全同期を強制します。単純にテストするとわかるでしょう。私はかなり使用しています。また、デバッグ出力と適切なエラー チェックも行います。MSDN サイトの Pure Powershell スクリプトへのリンクは次のとおりです。

http://bit.ly/SyncADDomain

また、単純な展開のために、純粋な powershell スクリプトを MSI インストーラーにパッケージ化した github リポジトリもあります。

https://github.com/CollinChaffin/SyncADDomain

参考になった場合は、回答としてマークしてください。ありがとう!

于 2015-05-22T18:07:34.620 に答える
1

AFIAK には、repadmin の完全な代替品はありません。単一のオブジェクトを複製Sync-ADObjectできますが、完全な同期はできません。また、そのコマンドレットは Windows 8.1/Windows Server 2012 R2 のみです。Windows Server vNext では、より包括的な AD レプリケーションのサポートが期待されます。

于 2015-02-02T18:12:48.620 に答える
1

このスクリプトを試してください:

[CmdletBinding()]
Param([switch]$AllPartitions)

$myDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain();

ForEach ($dc in $myDomain.DomainControllers) {
    $dcName = $dc.Name;
    $partitions = @();
    if ($AllPartitions) {
        $partitions += $dc.Partitions;
    } else {
        $partitions += ([ADSI]"").distinguishedName;
    }
    ForEach ($part in $partitions) {
        Write-Host "$dcName - Syncing replicas from all servers for partition '$part'"
        $dc.SyncReplicaFromAllServers($part, 'CrossSite')
    }
}
于 2015-02-03T00:28:21.690 に答える