web-dev-qa-db-ja.com

PowershellでSysvolレプリケーションのDFSRまたはFRSを確認する方法

Sysvol ReplicationのDFSRまたはFRSがpowershellで使用されているかどうかを確認する方法を調査しています。これが私の素朴な方法です、私は実装しようとしました。

  1. DFSレプリケーションがインストールされているかどうかを確認する

PS C:> Get-WindowsFeature | where Displayname -Match "Replication"

Display Name                                            Name                       Install State
------------                                            ----                       -------------
        [ ] DFS Replication                             FS-DFS-Replication             Available

それで、これはDFSRよりもFRSを使用していることを証明していますか?

  1. DNを確認する

    $FRSsysvol = "CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System,"+(Get-ADDomain $domain).DistinguishedName
    $DFSRsysvol = "CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,"+(Get-ADDomain $domain).DistinguishedName
    
    $frs = Get-ADObject -Filter { distinguishedName -eq $FRSsysvol }
    $dfsr = Get-ADObject -Filter { distinguishedName -eq $DFSRsysvol } 
    
    
    if ( $frs -ne $null ) { Write-Host -ForegroundColor red "FRS" }
    
    elseif ( $dfsr -ne $null ) { Write-Host -ForegroundColor green "DFS-R" }
    
    else { Write-Host -ForegroundColor Red "unknown" }
    

これは「FRS」を返します。しかし、$frs$dfsrの出力を再確認すると、どちらも$nullではありません。どちらもDN、Name、ObjectClass、ObjectGUIDを返します。それで、ここで何が問題なのですか?

2
Ender

私はこれを実装する方法を見つけました、この助けを願っています!

        $currentDomain =(Get-ADDomainController).hostname

        $defaultNamingContext = (([ADSI]"LDAP://$currentDomain/rootDSE").defaultNamingContext)
        $searcher = New-Object DirectoryServices.DirectorySearcher
        $searcher.Filter = "(&(objectClass=computer)(dNSHostName=$currentDomain))"
        $searcher.SearchRoot = "LDAP://" + $currentDomain + "/OU=Domain Controllers," + $defaultNamingContext
        $dcObjectPath = $searcher.FindAll() | %{$_.Path}

        # DFSR
        $searchDFSR = New-Object DirectoryServices.DirectorySearcher
        $searchDFSR.Filter = "(&(objectClass=msDFSR-Subscription)(name=SYSVOL Subscription))"
        $searchDFSR.SearchRoot = $dcObjectPath
        $dfsrSubObject = $searchDFSR.FindAll()

        if ($dfsrSubObject -ne $null){

            [pscustomobject]@{
                "SYSVOL Replication Mechanism"= "DFSR"
                "Path:"= $dfsrSubObject|%{$_.Properties."msdfsr-rootpath"}
            }

        }

        # FRS
        $searchFRS = New-Object DirectoryServices.DirectorySearcher
        $searchFRS.Filter = "(&(objectClass=nTFRSSubscriber)(name=Domain System Volume (SYSVOL share)))"
        $searchFRS.SearchRoot = $dcObjectPath
        $frsSubObject = $searchFRS.FindAll()

        if($frsSubObject -ne $null){

            [pscustomobject]@{
                "SYSVOL Replication Mechanism" = "FRS"
                "Path" = $frsSubObject|%{$_.Properties.frsrootpath}
            }

        }
2
Ender

PowershellでDFSレプリケーションを確認する場合は、適切なコマンドレットを使用できます。

PS C:\> get-command -Name "*dfsr*"

CommandType     Name                                               ModuleName                                                                                       
-----------     ----                                               ----------                                                                                       
Cmdlet          Add-DfsrConnection                                 DFSR                                                                                             
Cmdlet          Add-DfsrMember                                     DFSR                                                                                             
Cmdlet          ConvertFrom-DfsrGuid                               DFSR                                                                                             
Cmdlet          Export-DfsrClone                                   DFSR                                                                                             
Cmdlet          Get-DfsrBacklog                                    DFSR                                                                                             
Cmdlet          Get-DfsrCloneState                                 DFSR                                                                                             
Cmdlet          Get-DfsrConnection                                 DFSR                                                                                             
Cmdlet          Get-DfsrConnectionSchedule                         DFSR                                                                                             
Cmdlet          Get-DfsReplicatedFolder                            DFSR                                                                                             
Cmdlet          Get-DfsReplicationGroup                            DFSR                                                                                             
Cmdlet          Get-DfsrFileHash                                   DFSR                                                                                             
Cmdlet          Get-DfsrGroupSchedule                              DFSR                                                                                             
Cmdlet          Get-DfsrIdRecord                                   DFSR                                                                                             
Cmdlet          Get-DfsrMember                                     DFSR                                                                                             
Cmdlet          Get-DfsrMembership                                 DFSR                                                                                             
Cmdlet          Get-DfsrPreservedFiles                             DFSR                                                                                             
Cmdlet          Get-DfsrServiceConfiguration                       DFSR  

特に、Get-DfsrBacklogは、レプリケーションを待機しているファイルがあるかどうかを確認します。

PS C:\Windows\system32> (Get-DfsrBacklog -SourceComputerName Server1 -DestinationComputerName Server2).count
4

待機中のファイルの数、より一般的にはどのファイルを提供します...ソースと宛先を反転して、反対側のレプリケーション状態を取得できます。

コメントを編集

dfsrmig.exe /GetGlobalStateを使用して、使用されているレプリケーションをテストできます。コマンドが 'dfsr not initalized'を返す場合、あなたはFSRを使用です。

1
Sorcha