Active Directory-Replikation und FSMO-Rollenskript

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.

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.

Image

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="">&lt;#
=============================================================================================
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 = "&lt;h2>Active Directory Report&lt;/h2>"
$reportTableHead = "&lt;tr>&lt;th>Hostname&lt;/th>&lt;th>Site Name&lt;/th>&lt;th>FSMO Owner&lt;/th>&lt;th>Replication Time&lt;/th>&lt;th>Replication Test&lt;/th>&lt;th>Replication Server&lt;/th>&lt;/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 = "&lt;tr>&lt;td>$($server.HostName)&lt;/td>&lt;td>$((Get-ADReplicationSite -Identity $server.Site).Name)&lt;/td>&lt;td style='color: green'>$($isFsmoRoleOwner)&lt;/td>&lt;td>$($replicationTimeSpan)&lt;/td>&lt;td>$($replicationStatus)&lt;/td>&lt;td>$($replicaServers -join ', ')&lt;/td>&lt;/tr>"
    $reportTableBody += $tableRow
}
 
# HTML Report Create
$reportHtml = "&lt;html>&lt;head>&lt;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; } &lt;/style>&lt;/head>&lt;body>" + $reportTitle + "&lt;table>" + $reportTableHead + $reportTableBody + "&lt;/table>&lt;/body>&lt;/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>

Ähnliche Artikel – Active Directory-Replikation und FSMO-Rollenskript

Kommentar