I ran into some annoyances related to it taking more time than my patience was allowing, for all of our domain controllers to be in sync...
Because, while I am connected to a DC in the mid-West, making changes, it can take up to 15 minutes for those changes to be reflected with the DC's on the East coast...
Plus, if I suspect there may be sync issues, I needed a quick way to know / rule that out.
This script does a line by line replication with each respective DC sync partner - And reports that result.
Then it confirms the partner sync status.
I set the confirmation bit as a function, so that it can also easily be run by itself.
$SyncMeta = @() Write-Host "Gathering DC sync partner list..." -Fore 14 $All_DCs_Sync = (Get-ADDomainController -Filter * | sort).Hostname | % {($_).Split('.')[0]} | % { $Server_ = $_ $SyncMeta += Get-ADReplicationPartnerMetadata -Target $Server_ | select @{n='Server';e={$Server_}}, @{n='Partner';e={($_.Partner).Split(',')[1].Split('=')[1]}} } $DomPart = (Get-ADDomainController).DefaultPartition $SyncMeta | % { $SyncResult = Repadmin /replicate $_.Partner $_.Server $DomPart Write-Host " $(($SyncResult | Out-String).Trim())" -Fore 11 } ################################## Function SyncReport { '' Write-Host "Start sync query : " -Fore 14 -No Get-Date -Format "MM/d/yyyy hh:mm:ss tt" $All_DCs_Sync = (Get-ADDomainController -Filter * | sort).Hostname | % {($_).Split('.')[0]} | % { $Server_ = $_ Get-ADReplicationPartnerMetadata -Target $Server_ | select @{n='Server';e={$Server_}}, @{n='Partner';e={($_.Partner).Split(',')[1].Split('=')[1]}}, LastReplicationAttempt, LastReplicationSuccess } Write-Host "Finish sync query: " -Fore 14 -No Get-Date -Format "MM/d/yyyy hh:mm:ss tt" '' Write-Host (($All_DCs_Sync | sort -Descending LastReplicationSuccess | Out-String)).Trim() '' $Newest_Sync = ($All_DCs_Sync.LastReplicationSuccess | sort -Descending)[0] $Oldest_Sync = ($All_DCs_Sync.LastReplicationSuccess | sort -Descending)[-1] Write-Host "Time between MOST recent, and LEAST recent:" -Fore 11 (($Newest_Sync - $Oldest_Sync) | Select Days, Hours, Minutes, Seconds | fl | Out-String).Trim() } SyncReport
No comments:
Post a Comment