Wir werden das Skript detailliert beschreiben, das ich vorbereitet habe, um Ihre Anforderungen an Replikationstests und FSMO-Rollenbesitzberichte für Active Directory-Umgebungen zu erfüllen.
Wenn das entsprechende Skript ausgeführt wird, findet es alle Domänencontroller-Server (DC), AD-Standortinformationen und FSMO-Besitz in Ihrer Umgebung und führt dann Replikationstests durch. Es meldet alle diese Transaktionen im HTML-Format.
- Exchange Server-Sende-/Empfangsbericht – Cengiz YILMAZ
- Fügen Sie Active Directory-Benutzer in großen Mengen zur Gruppe hinzu – Cengiz YILMAZ
Inhaltsverzeichnis
Beschreibung des Active Directory-Replikationsskripts
Wenn das Skript ausgeführt wird $servers = Get-ADDomainController -Filter *
Die Zeile findet alle Domänencontroller-Server in der Umgebung. Um den HTML-Bericht später zu speichern C:ADReport
Es wird ein Ordner mit dem Namen erstellt. Wenn es einen Ordner mit diesem Namen gibt, werden keine weiteren Maßnahmen ergriffen.
Der Server mit der FSMO-Rolle wird im Bericht als „True“ angezeigt, während andere Server als „False“ angezeigt werden. Anschließend werden Replikationstests zwischen den Servern durchgeführt, die im Bericht als erfolgreich/fehlgeschlagen angezeigt werden. Dem Bericht werden auch Replikationszeiten hinzugefügt.

Active Directory-Replikationsskript
Folgende Powershell Mit dem Skript können Sie einen Active Directory-Replikationstest und einen FSMO-Rollenbesitzbericht erstellen:
$servers = Get-ADDomainController -Filter *: Mit dieser Zeile finden wir die Domänencontroller-Server in unserer Umgebung.
Anschließend erstellen wir einen Ordner mit dem Namen C:ADReport, um den HTML-Bericht zu speichern. Wenn ein Ordner mit diesem Namen vorhanden ist, werden keine weiteren Maßnahmen ergriffen.
Wir erstellen unsere HTML-Tabelle mit #HTML und suchen den Server mit der FSMO-Rolle. Der Server mit der FSMO-Rolle wird im Bericht als „True“ angezeigt, während die anderen Server als „False“ angezeigt werden.
Anschließend führen wir Replikationstests zwischen den Servern durch und geben diese Erfolge/Misserfolge im Bericht an. Wir können auch die Replikationszeiten im Bericht widerspiegeln.
<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""><#
=============================================================================================
Name = Cengiz YILMAZ
Date = 11.03.2023
www.cengizyilmaz.net
www.cozumpark.com/author/cengizyilmaz
============================================================================================
#>
# DC Servers
$servers = Get-ADDomainController -Filter *
# Folder Create
$reportFolder = "C:ADReport"
If (!(Test-Path $reportFolder)) {
New-Item $reportFolder -ItemType Directory
}
# HTML
$reportTitle = "<h2>Active Directory Report</h2>"
$reportTableHead = "<tr><th>Hostname</th><th>Site Name</th><th>FSMO Owner</th><th>Replication Time</th><th>Replication Test</th><th>Replication Server</th></tr>"
$reportTableBody = ""
# DC Servers Info
foreach ($server in $servers) {
# FSMO
$fsmoRoles = (Get-ADDomain).InfrastructureMaster, (Get-ADDomain).PDCEmulator, (Get-ADDomain).RIDMaster, (Get-ADDomain).SchemaMaster
$isFsmoRoleOwner = If ($fsmoRoles -contains $server.HostName) { "True" } Else { "False" }
# Replication Test
$replicationResult = (Get-ADReplicationPartnerMetadata -Target $server.HostName -ErrorAction SilentlyContinue).LastReplicationSuccess
If ($replicationResult) {
If ($replicationResult.GetType().IsArray) {
$replicationResult = [DateTime]$replicationResult[0]
} Else {
$replicationResult = [DateTime]$replicationResult
}
}
$replicationStatus = If ($replicationResult) { "Pass" } Else { "Fail" }
$replicationTimeSpan = If ($replicationResult) { ((Get-Date) - $replicationResult).TotalSeconds.ToString() + " Second " } Else { "" }
# Replication To Servers
$replicaServers = (Get-ADReplicationPartnerMetadata -Target $server.HostName -ErrorAction SilentlyContinue).Partner | Sort-Object
# Table Create
$tableRow = "<tr><td>$($server.HostName)</td><td>$((Get-ADReplicationSite -Identity $server.Site).Name)</td><td style='color: green'>$($isFsmoRoleOwner)</td><td>$($replicationTimeSpan)</td><td>$($replicationStatus)</td><td>$($replicaServers -join ', ')</td></tr>"
$reportTableBody += $tableRow
}
# HTML Report Create
$reportHtml = "<html><head><style>table { border-collapse: collapse; font-family: Arial; } th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; } th { background-color: #4CAF50; color: white; } tr:nth-child(even) { background-color: #f2f2f2; } </style></head><body>" + $reportTitle + "<table>" + $reportTableHead + $reportTableBody + "</table></body></html>"
# HTML Report Save
$dateString = Get-Date -Format "yyyyMMdd-HHmmss"
$reportFilePath = "$($reportFolder)ADReport_$($dateString).html"
Set-Content -Path $reportFilePath -Value $reportHtml
# HTML Report Location
Write-Host "Report was created: $reportFilePath" -ForegroundColor Red
</pre>