Freigeben über


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).

  1. Introduction (Einführung)

  2. Replikation und Metadaten

  3. Get-ADReplicationAttributeMetadata

  4. Get-ADReplicationPartnerMetadata

  5. Get-ADReplicationFailure

  6. Get-ADReplicationQueueOperation and Get-ADReplicationUpToDatenessVectorTable

  7. Sync-ADObject

  8. Topologie

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

Screenshot: Metadatenausgabe zum Domänenadministratorenobjekt in einer lesbaren Liste

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

Screenshot: Anzeige der Daten wie in Repadmin in Tabellenform

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

Screenshot: Anzeigen aller Gruppen, die am 13. Januar 2012 in irgendeiner Weise verändert wurden

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

Screenshot: Anzeigen aller Gruppen, in denen Tony Wang Mitglied ist, und Anzeigen des letzten Änderungsdatums der Gruppe

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

Screenshot: Anzeigen aller Objekte, die mit einer Systemstatussicherung in der Domäne autoritativ wiederhergestellt wurden, anhand ihrer künstlich hohen Versionsnummer

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

Screenshot: Abrufen des lesbaren Replikationsstatus eines einzelnen Domänencontrollers

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

Screenshot: Zeitpunkt der letzten Replikation eines Domänencontrollers in eingehender Richtung und beteiligte Partner in Tabellenform

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

Screenshot: Kontaktieren aller Domänencontroller in der Gesamtstruktur und Anzeige der DCs, deren letzter Replikationsversuch aus einem beliebigen Grund fehlgeschlagen ist

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

Screenshot: Zurückgeben der letzten Fehler eines Domänencontrollers und Anzeigen der Partner, die nicht kontaktiert werden konnten

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

Screenshot: Anzeigen einer Tabellenansicht für alle Server an einem logischen AD-Standort, zur besseren Lesbarkeit sortiert und nur mit den wichtigsten Daten

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}

Screenshot: Replikation eines gelöschten Kontos aus dem Active Directory-Papierkorb auf alle Domänencontroller, ohne die Replikation aller anderen vorgenommenen Objektänderungen zu erzwingen

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

Screenshot: Benutzeroberfläche des Editors

Screenshot: Erstellen neuer Websites mithilfe einer CSV-Datei

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

Screenshot: Erstellen einer neuen Standortverknüpfung zwischen zwei vorhandenen Standorten mit benutzerdefiniertem Replikationsintervall und Standortkosten

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)}

Erweiterte Verwaltung mit PowerShell

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

Screenshot: Suche nach allen Standorten mit fehlenden Subnetzzuweisungen, um die Liste mit den tatsächlichen Subnetzen dieser Standorte abzustimmen

Weitere Informationen

Einführung in die Active Directory-Replikation und Topologieverwaltung mithilfe von Windows PowerShell (Stufe 100)