Como verificar DFSR ou FRS para Sysvol Replication com Powershell?

2

Eu tenho investigado como verificar se o DFSR ou o FRS para Sysvol Replication é usado com o powershell. Aqui estão os meus métodos ingênuos, tentei implementar.

  1. Verifique se a replicação DFS está instalada

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

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

Então, isso prova que ele está usando o FRS sobre o DFSR ??

  1. Verifique o 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" }
    

Isso retorna "FRS". Mas quando dou novamente a verificação de $frs e $dfsr output. Ambos não são $null . Ambos retornam DN, Name, ObjectClass e ObjectGUID também. Então, qual é o problema aqui?

    
por Ender 04.10.2017 / 13:32

2 respostas

1

Eu encontrei o caminho para implementar isso, espero que isso ajude!

        $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}
            }

        }
    
por 25.10.2017 / 17:33
1

Se você quiser verificar sua replicação DFS com o powershell, poderá usar os cmdlets apropriados:

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  

Em particular, Get-DfsrBacklog para verificar se você tem arquivos aguardando replicação:

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

Ele fornecerá o número de arquivos em espera e, mais geralmente, qual arquivo ... Você pode inverter a origem e o destino para obter o estado de replicação do outro lado.

Editar comentário

Você pode usar dfsrmig.exe /GetGlobalState para testar qual replicação é usada. Se o comando retornar 'dfsr não iniciado', você usa o FSR .

    
por 04.10.2017 / 13:47