Erweiterte Active Directory-Replikation und Topologieverwaltung mithilfe von Windows PowerShell (Level 200)
Der vorliegende Artikel bietet eine ausführlichere Erläuterung der Cmdlets für die AD DS-Replikation und die Topologieverwaltung sowie zusätzliche Beispiele. Eine Einführung finden Sie im Artikel Einführung in die Active Directory-Replikation und Topologieverwaltung mithilfe von Windows PowerShell (Stufe 100).
Einführung
In der folgenden Tabelle sind die Cmdlets für Replikation und Topologie aufgeführt, die dem Active Directory-Modul für Windows PowerShell hinzugefügt wurden:
Cmdlet | Erklärung |
---|---|
Get-ADReplicationAttributeMetadata | Gibt Metadaten zur Attributreplikation für ein Objekt zurück |
Get-ADReplicationConnection | Gibt Objektdetails zur Domänencontrollerverbindung zurück |
Get-ADReplicationFailure | Gibt den neuesten Replikationsfehler für einen Domänencontroller zurück |
Get-ADReplicationPartnerMetadata | Gibt die Replikationskonfiguration für einen Domänencontroller zurück |
Get-ADReplicationQueueOperation | Gibt das Backlog der aktuellen Replikations-Warteschlange zurück |
Get-ADReplicationSite | Gibt Standortinformationen zurück |
Get-ADReplicationSiteLink | Gibt Standortverknüpfungsinformationen zurück |
Get-ADReplicationSiteLinkBridge | Gibt Standortverknüpfungsbrückeninformationen zurück |
Get-ADReplicationSubnet | Gibt AD-Subnetzinformationen zurück |
Get-ADReplicationUpToDatenessVectorTable | Gibt den Aktualitätsvektor für einen Domänencontroller zurück |
Get-ADTrust | Gibt Informationen über eine domänen- oder gesamtstrukturübergreifende Vertrauensstellung zurück |
New-ADReplicationSite | Erstellt einen neuen Standort |
New-ADReplicationSiteLink | Erstellt eine neue Standortverknüpfung |
New-ADReplicationSiteLinkBridge | Erstellt eine neue Standortverknüpfungsbrücke |
New-ADReplicationSubnet | Erstellt ein neues AD-Subnetz |
Remove-ADReplicationSite | Löscht einen Standort |
Remove-ADReplicationSiteLink | Löscht eine Standortverknüpfung |
Remove-ADReplicationSiteLinkBridge | Löscht eine Standortverknüpfungsbrücke |
Remove-ADReplicationSubnet | Löscht ein AD-Subnetz |
Set-ADReplicationConnection | Bearbeitet eine Verbindung |
Set-ADReplicationSite | Bearbeitet einen Standort |
Set-ADReplicationSiteLink | Bearbeitet eine Standortverknüpfung |
Set-ADReplicationSiteLinkBridge | Bearbeitet eine Standortverknüpfungsbrücke |
Set-ADReplicationSubnet | Bearbeitet ein AD-Subnetz |
Sync-ADObject | Erzwingt die Replikation eines einzelnen Objekts |
Die Basis der meisten dieser Cmdlets ist Repadmin.exe. Andere (nicht aufgelistete) Cmdlets verwalten Features wie die dynamische Zugriffssteuerung und gruppenverwaltete Dienstkonten.
Eine vollständige Liste aller Active Directory Windows PowerShell-Cmdlets erhalten Sie mit dem folgenden Befehl:
Get-Command -module ActiveDirectory
Eine vollständige Liste der Argumente aller Active Directory Windows PowerShell-Cmdlets finden Sie im jeweiligen Hilfeartikel. Zum Beispiel:
Get-Help New-ADReplicationSite
Mit dem Cmdlet Update-Help
können Sie die Hilfedateien herunterladen und installieren.
Replikation und Metadaten
Repadmin.exe prüft Integrität und Konsistenz der Active Directory-Replikation. Repadmin.exe bietet einfache Optionen zur Datenbearbeitung, wie z. B. einige Argumente für CSV-Ausgabe, für die Automatisierung müssen jedoch normalerweise Ausgaben in Form von Textdateien analysiert werden. Das Active Directory-Modul für Windows PowerShell ist der erste Versuch, eine Option anzubieten, die wirkliche Kontrolle über die zurückgegebenen Daten ermöglicht. Bisher mussten zu diesem Zweck Skripts erstellt oder Tools von Drittanbietern verwendet werden.
Außerdem haben die folgenden Cmdlets die neuen Parameter Ziel, Bereich und EnumerationServer:
Get-ADReplicationFailure
Get-ADReplicationPartnerMetadata
Get-ADReplicationUpToDatenessVectorTable
Das Ziel-Argument akzeptiert eine durch Trennzeichen getrennte Liste von Zeichenfolge, mit denen die im Argument Bereich angegebenen Zielserver, Standorte, Domänen oder Gesamtstrukturen identifiziert werden. Ein Sternchen (*) ist auch zulässig und bezeichnet alle Server im angegebenen Bereich. Wenn kein Bereich angegeben ist, sind alle Server in der Gesamtstruktur des aktuellen Benutzers gemeint. Das Argument Bereich gibt die Breite der Suche an. Akzeptiert werden die Werte Server, Site, Domain und Forest. EnumerationServer gibt den Server an, der die Aufzählung der in Ziel und Bereich angegebenen Liste von Domänencontrollern enthält. Dieses Argument funktioniert analog zu Server, und der angegebene Server muss den Active Directory-Webdienst ausführen.
Im Folgenden finden Sie einige Beispielszenarien, die mit „repadmin.exe“ nicht umsetzbar sind. Sie verdeutlichen die administrativen Möglichkeiten, die diese Cmdlets bieten. Genauere Informationen zur Syntax finden Sie in den Hilfedateien der einzelnen Cmdlets.
Get-ADReplicationAttributeMetadata
Dieses Cmdlet funktioniert gleich wie repadmin.exe /showobjmeta. Es gibt Replikationsmetadaten zurück, z. B. den Änderungszeitpunkt eines Attributs, den Ursprungs-Domänencontroller, Versions- und USN-Informationen und Attributdaten. Dieses Cmdlet ist hilfreich, wenn Sie feststellen müssen, wo und wann eine Änderung durchgeführt wurde.
Im Gegensatz zu Repadmin bietet Windows PowerShell flexible Kontrolle über Suche und Ausgabe. Sie können z. B. die Metadaten des Domänen-Admin-Objekts sortiert als lesbare Liste ausgeben:
Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-list
Alternativ können Sie die Daten wie bei Repadmin in einer Tabelle ausgeben:
Get-ADReplicationAttributeMetadata -object "cn=domain admins,cn=users,dc=corp,dc=contoso,dc=com" -server dc1.corp.contoso.com -showalllinkedvalues | format-table -wrap
Alternativ können Sie die Metadaten für eine gesamte Objektklasse abrufen, indem Sie das Get-Adobject-Cmdlet mit einem Filter verknüpfen, wie z. B. alle Gruppen, und die Ausgabe mit einem bestimmten Datum kombinieren. Pipelines sind Kanäle zur Datenübergabe zwischen mehreren Cmdlets. Anzeigen aller Gruppen, die am 13. Januar 2012 auf irgendeine Art verändert wurden:
Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.lastoriginatingchangetime -like "*1/13/2012*" -and $_.attributename -eq "name"} | format-table object
Weitere Informationen zu Windows PowerShell-Vorgängen mit Pipelines finden Sie unter Piping und die Pipeline in Windows PowerShell.
Anzeigen aller Gruppen, in denen Tony Wang Mitglied ist, und Anzeigen des letzten Änderungsdatums der Gruppen:
Get-ADObject -filter 'objectclass -eq "group"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | where-object {$_.attributevalue -like "*tony wang*"} | format-table object,LastOriginatingChangeTime,version -auto
Anzeigen aller Objekte, die mit einer Systemstatussicherung in der Domäne autoritativ wiederhergestellt wurden, anhand ihrer künstlich hohen Versionsnummer:
Get-ADObject -filter 'objectclass -like "*"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com | where-object {$_.version -gt "100000" -and $_.attributename -eq "name"} | format-table object,LastOriginatingChangeTime
Senden aller Benutzermetadaten in eine CSV-Datei zur späteren Analyse in Microsoft Excel:
Get-ADObject -filter 'objectclass -eq "user"' | Get-ADReplicationAttributeMetadata -server dc1.corp.contoso.com -showalllinkedvalues | export-csv allgroupmetadata.csv
Get-ADReplicationPartnerMetadata
Dieses Cmdlet gibt Informationen über Konfiguration und Status der Replikation für einen Domänencontroller zurück und ermöglicht Überwachung, Inventur und Problembehandlung. Im Gegensatz zu Repadmin.exe werden bei Windows PowerShell nur die wirklich relevanten Daten im jeweils optimalen Format angezeigt.
Der lesbare Replikationsstatus eines einzelnen Domänencontrollers:
Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com
Der Zeitpunkt der letzten Replikation eines Domänencontrollers in eingehender Richtung und dessen Partner, im Tabellenformat:
Get-ADReplicationPartnerMetadata -target dc1.corp.contoso.com | format-table lastreplicationattempt,lastreplicationresult,partner -auto
Alle Domänencontroller in der Gesamtstruktur kontaktieren und diejenigen anzeigen, deren letzter Replikationsversuch aus irgendeinem Grund fehlgeschlagen ist:
Get-ADReplicationPartnerMetadata -target * -scope server | where {$_.lastreplicationresult -ne "0"} | ft server,lastreplicationattempt,lastreplicationresult,partner -auto
Get-ADReplicationFailure
Dieses Cmdlet gibt Informationen über aktuelle Fehler bei der Replikation zurück. Es funktioniert gleich wie Repadmin.exe /showreplsum, jedoch ebenfalls mit wesentlich mehr Kontrolle dank Windows PowerShell.
Sie können zum Beispiel die letzten Fehler für einen Domänencontroller und die Partner anzeigen, die nicht kontaktiert werden konnten:
Get-ADReplicationFailure dc1.corp.contoso.com
Anzeigen einer Tabellenansicht für alle Server in einem logischen AD-Standort, sortiert zur leichteren Analyse und nur mit den wichtigsten Daten:
Get-ADReplicationFailure -scope site -target default-first-site-name | format-table server,firstfailuretime,failurecount,lasterror,partner -auto
Get-ADReplicationQueueOperation and Get-ADReplicationUpToDatenessVectorTable
Beide Cmdlets geben Auskunft über weitere Aspekte des Domänencontrollers und darüber, ob er auf dem neuesten Stand ist. Dazu gehören auch Informationen über ausstehende Replikationen und Versionsvektoren.
Sync-ADObject
Dieses Cmdlet funktioniert gleich wie Repadmin.exe /replsingleobject. Diese Funktion ist hilfreich, wenn Sie irgendwelche Änderungen außerplanmäßig replizieren möchten, insbesondere bei der Korrektur von Problemen.
Wenn z. B. jemand das Benutzerkonto des Geschäftsführers gelöscht und anschließend mit dem Active Directory-Papierkorb wiederhergestellt hat, möchten Sie dieses Objekt vermutlich sofort auf alle Domänencontroller replizieren. Außerdem möchten Sie dabei sehr wahrscheinlich keine Replikation aller anderen Objektänderungen erzwingen. Schließlich verfügen Sie zu diesem Zweck über einen Replikationsplan, um eine Überlastung der WAN-Verbindungen zu vermeiden.
Get-ADDomainController -filter * | foreach {Sync-ADObject -object "cn=tony wang,cn=users,dc=corp,dc=contoso,dc=com" -source dc1 -destination $_.hostname}
Topologie
Repadmin.exe ist zwar praktisch zum Abrufen von Daten über Replikationstopologien wie z. B. Standorte, Standortverknüpfungen, Standortverknüpfungsbrücken und Verbindungen, bietet jedoch keine umfassenden Argumente, um Änderungen an den Objekten vorzunehmen. Bislang gibt es kein skriptgesteuertes, integriertes Windows-Hilfsprogramm speziell für Administratoren, um AD DS-Topologien zu erstellen und zu bearbeiten. Active Directory ist in Millionen von Kundenumgebungen gereift, und offensichtlich wird eine Möglichkeit zum massenweisen Bearbeiten logischer Active Directory-Informationen benötigt.
Nach einer schnellen Erweiterung neuer Filialen und der Konsolidierung anderer Filialen kann es passieren, dass Sie Hunderte von Standortänderungen aufgrund von physischen Standorten, Netzwerkänderungen und neuen Kapazitätsanforderungen vornehmen müssen. Anstatt Dssites.msc und Adsiedit.msc für diese Änderungen zu verwenden, können Sie den Vorgang automatisieren. Dies ist besonders überzeugend, wenn Sie mit einer Datentabelle arbeiten, die Sie von Ihren Netzwerk- und Einrichtungsteams erhalten haben.
Die Get-Adreplication\*-Cmdlets geben Informationen über die Replikationstopologie zurück und sind nützlich für das Massenpipelining in die Set-Adreplication\*-Cmdlets. Get-Cmdlets ändern keine Daten. Sie dienen nur zur Anzeige von Daten oder zum Erstellen von Windows PowerShell-Sitzungsobjekten, die per Pipelining an Set-Adreplication\*-Cmdlets weitergereicht werden können. Die New- und Remove-Cmdlets sind hilfreich zum Erstellen und Entfernen von Active Directory-Topologieobjekten.
Sie können z. B. neue Standorte mit einer CSV-Datei erstellen:
Import-Csv -path C:\newsites.csv | new-adreplicationsite
Alternativ können Sie eine Standortverknüpfung zwischen zwei existierenden Standorten mit benutzerdefiniertem Replikationsintervall und Standortkosten einrichten:
New-ADReplicationSiteLink -name "chicago<-->waukegan" -sitesincluded chicago,waukegan -cost 50 -replicationfrequencyinminutes 15
Oder Sie können alle Standorte in der Gesamtstruktur suchen und deren Options-Attribut durch eine Kennzeichnung zum Aktivieren der standortübergreifenden Benachrichtigung ersetzen, um mit maximaler Geschwindigkeit und mit Komprimierung zu replizieren:
Get-ADReplicationSiteLink -filter * | set-adobject -replace @{options=$($_.options -bor 1)}
Wichtig
Mit -bor 5 können Sie die Komprimierung für diese Standortverknüpfungen ebenfalls deaktivieren.
Oder Sie suchen nach allen Standorten mit fehlenden Subnetz-Zuweisungen, um die Liste mit den tatsächlichen Subnetzen dieser Standorte abzustimmen:
Get-ADReplicationSite -filter * -property subnets | where-object {!$_.subnets -eq "*"} | format-table name