Public/Domain/Get-ADReplicationInfo.ps1
|
function Get-ADReplicationInfo { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$DomainName ) try { Write-Log "Retrieving replication topology for domain: $DomainName..." -Level Info # Get replication connections $replicationConnections = Get-ADReplicationConnection -Filter * -Server $DomainName | ForEach-Object { [PSCustomObject]@{ FromServer = $_.ReplicateFromDirectoryServer ToServer = $_.ReplicateToDirectoryServer Schedule = $_.ReplicationSchedule Options = $_.Options AutoGenerated = $_.AutoGenerated } } # Get replication site links $siteLinks = Get-ADReplicationSiteLink -Filter * -Server $DomainName | ForEach-Object { [PSCustomObject]@{ Name = $_.Name Cost = $_.Cost ReplicationFrequency = $_.ReplicationFrequencyInMinutes Sites = $_.Sites } } # Get replication status $replicationStatus = Get-ADReplicationPartnerMetadata -Target $DomainName -Scope Domain | ForEach-Object { [PSCustomObject]@{ Partner = $_.Partner LastReplicationAttempt = $_.LastReplicationAttempt LastReplicationResult = $_.LastReplicationResult LastReplicationSuccess = $_.LastReplicationSuccess } } return [PSCustomObject]@{ Connections = $replicationConnections SiteLinks = $siteLinks Status = $replicationStatus } } catch { Write-Log "Error retrieving replication topology for $DomainName : $($_.Exception.Message)" -Level Error return $null } } |