
Ameer - stock.adobe.com
Wie Sie den Global Catalog und FSMO-Rollen in AD verwalten
Der Global Catalog und FSMO-Rollen steuern kritische Aufgaben im Active Directory. PowerShell und Befehlszeilen-Tools wie dcdiag helfen bei Analyse und Reparatur.
Der Global Catalog ist eine Teilreplikation der Gesamtstruktur. Er enthält alle Objekte mit den wichtigsten Attributen und ermöglicht dadurch, dass Benutzer sich auch dann anmelden können, wenn der Domänencontroller ihrer Domäne nicht erreichbar ist. Außerdem werden universelle Gruppenmitgliedschaften über den Global Catalog aufgelöst. Ohne ihn kommt es zu verzögerten Logins und fehlerhaften Zugriffen auf Ressourcen. Ein grundlegender Prüfpunkt ist der Befehl:
Get-ADDomainController -Identity dc01.joos.int | Select-Object Name,IsGlobalCatalog
Dieser PowerShell-Befehl ruft Informationen zu einem bestimmten Domänencontroller ab. Der Parameter -Identity erwartet den FQDN oder NetBIOS-Namen, hier also dc01.joos.int. Die Ausgabe liefert unter anderem das Feld IsGlobalCatalog. Steht hier True, fungiert der Server als Global Catalog, steht dort False, muss die Rolle noch aktiviert werden.
Die Aktivierung erfolgt mit:
Set-ADDomainController -Identity dc01.joos.int -IsGlobalCatalog $true
Set-ADDomainController ändert die Konfiguration eines Domänencontrollers. Der Parameter -IsGlobalCatalog $true weist dem Server die Rolle explizit zu. Mit $false könnte die Rolle wieder entzogen werden, was in der Praxis nur sinnvoll ist, wenn Lastprobleme bestehen oder zu viele Katalogserver konfiguriert wurden.
Für eine Gesamtübersicht über alle GC-Server in der Gesamtstruktur nutzt man:
Get-ADDomainController -Filter * | Where-Object {$_.IsGlobalCatalog -eq $true}

Der Parameter -Filter * ruft sämtliche DCs ab. Mit Where-Object wird anschließend gefiltert, ob das Attribut IsGlobalCatalog auf True gesetzt ist. So lässt sich in großen Umgebungen schnell prüfen, wie viele GC-Server aktiv sind und an welchen Standorten diese stehen. Über die Befehlszeile eignet sich:
dsquery server -isgc
Dsquery sucht nach Objekten im Verzeichnis. Die Option server zeigt Domänencontroller, -isgc filtert auf diejenigen, die als Global Catalog konfiguriert sind.
Ein wichtiger Test ist außerdem:
nltest /dsgetdc:joos.int /GC /force
Hier prüft nltest, ob für die Domäne joos.int ein GC erreichbar ist. /dsgetdc sucht nach einem Domain Controller, /GC verlangt explizit einen Global Catalog, und /force zwingt die Abfrage am DNS-Server, statt auf zwischengespeicherte Informationen zurückzugreifen. So wird ausgeschlossen, dass alte oder fehlerhafte Cache-Einträge die Diagnose verfälschen.
FSMO-Rollen und zentrale Einmalfunktionen
Die FSMO-Rollen (Flexible Single Master Operations) sind für Aufgaben zuständig, die nicht im Mehrfachbetrieb ablaufen dürfen. Dazu zählen:
- Der Schema-Master verwaltet Änderungen am AD-Schema. Ohne ihn lassen sich keine neuen Klassen oder Attribute hinzufügen, etwa bei der Installation von Exchange.
- Der Domänennamen-Master koordiniert das Hinzufügen neuer Domänen oder das Umbenennen von Domänen.
- Der RID-Master vergibt Blöcke von relativen IDs (RIDs), die für die Bildung eindeutiger SIDs benötigt werden.
- Der PDC-Emulator ist Zeitquelle, Kennwort-Master und übernimmt Legacy-Funktionen für alte Clients.
- Der Infrastruktur-Master pflegt Objektreferenzen zwischen Domänen und sorgt dafür, dass Gruppenmitgliedschaften domänenübergreifend aktuell sind.
Abfragen lassen sich mit netdom query fsmo durchführen. Der Befehl netdom ist ein klassisches Befehlszeilen-Tool für Domänenverwaltung. Mit query fsmo werden die fünf Rollen aufgelistet, jeweils mit dem Server, der sie hält.
Gezielte Abfragen gehen auch mit dsquery:
dsquery server -hasfsmo schema
dsquery server -hasfsmo rid
dsquery server -hasfsmo pdc
dsquery server -hasfsmo infr
dsquery server -hasfsmo name
Die Option -hasfsmo verlangt eine konkrete Rolle. Jeder dieser Befehle liefert den DC, der die Rolle aktuell hält.
PowerShell erlaubt eine feinere Abfrage:
Get-ADDomain joos.int | Select-Object InfrastructureMaster,RIDMaster,PDCEmulator
Get-ADForest joos.int | Select-Object SchemaMaster,DomainNamingMaster

Das Cmdlet Get-ADDomain zeigt alle domänenspezifischen Rollen, Get-ADForest die beiden globalen. Select-Object reduziert die Ausgabe auf die relevanten Felder.
FSMO-Rollen übertragen
Ein regulärer Rollenwechsel erfolgt mit PowerShell:
Move-ADDirectoryServerOperationMasterRole -Identity dc01.joos.int -OperationMasterRole RIDMaster,PDCEmulator,InfrastructureMaster
Das Cmdlet Move-ADDirectoryServerOperationMasterRole verschiebt FSMO-Rollen. Der Parameter -Identity gibt den Zielserver an, -OperationMasterRole akzeptiert eine oder mehrere Rollen. Die Angabe mehrerer Rollen durch Kommas beschleunigt Migrationen, etwa wenn ein alter DC ersetzt werden soll.
Bei dauerhaften Ausfällen eines Servers wird ein Seize durchgeführt. Dies geschieht mit ntdsutil:
ntdsutil
roles
connections
connect to server dc01.joos.int
quit
seize rid master
Nach Aufruf des Kontextes roles und einer Verbindung mit dem Befehl connect to server wird mit seize die gewünschte Rolle übernommen. Dieser Schritt ist gefährlich, da der alte Server bei Rückkehr zu Konflikten führen würde.
Replikation und Standorttopologie überwachen
Probleme mit FSMO oder GC hängen oft mit fehlerhafter Replikation zusammen. Mit repadmin /replsummary erhält man eine Übersicht aller DCs, inklusive erfolgreicher und fehlerhafter Replikationsversuche. Der Befehl repadmin /showrepl dc01.joos.int listet die eingehenden Replikationsverbindungen von dc01 im Detail.
PowerShell liefert ähnliche Daten mit:
Get-ADReplicationPartnerMetadata -Target dc01.joos.int
Dieser Befehl zeigt Metadaten wie die letzte erfolgreiche Replikation und die Richtung der Verbindung. So lassen sich gezielt Partner mit Problemen identifizieren.
Die Standortzuordnung basiert auf Subnetzen. Mit PowerShell kann ein Standort erstellt werden:
New-ADReplicationSite "Erbach"
Das Subnetz wird folgendermaßen zugewiesen:
New-ADReplicationSubnet -Name "10.0.0.0/16" -Site "Erbach"
Diese Einträge entscheiden darüber, welcher DC sich welchem Standort zuordnet. Falsche Subnetzkonfigurationen sind eine häufige Ursache, wenn nltest /dsgetsite falsche oder keine Werte liefert.
Diagnose-Tools im Detail
Das wichtigste Werkzeug bleibt dcdiag. Hier ist ein Beispiel:
dcdiag /v /s:dc01.joos.int >C:\temp\dcdiag_dc01.txt
Der Parameter /v aktiviert die ausführliche Ausgabe, /s: prüft einen bestimmten Server. Mit der Umleitung > werden die Ergebnisse in eine Datei geschrieben. Der Test dcdiag /test:FSMOCheck /s:dc01.joos.int /v validiert die Erreichbarkeit der Rolleninhaber und vergleicht, ob die DCs die gleichen Informationen über die FSMO-Owner haben. Der Parameter /s: richtet den Test gezielt gegen dc01.joos.int. Der Schalter /v schaltet die ausführliche Ausgabe ein, das ist bei der Auswertung hilfreich.
Für die Kontrolle, ob ein DC die Rolleninhaber korrekt kennt, gibt es zusätzlich den Test KnowsOfRoleHolders. Der prüft die Replikationskenntnis der FSMO-Owner in der Konfiguration.
dcdiag /test:KnowsOfRoleHolders /s:dc01.joos.int /v
dcdiag /a
dcdiag /e
Der Parameter /a testet alle DCs des lokalen Standorts. Der Parameter /e prüft alle DCs in der Gesamtstruktur. Mit /q bekommen Admins nur Fehler ausgegeben, das erleichtert die Übersicht in großen Umgebungen. Stimmen die Rolleninhaber, aber Dcdiag meldet Fehler, liegt es oft am DNS. Dann prüfen Admins zuerst die SRV-Einträge und frischen die Netlogon-Registrierung auf:
nslookup _ldap._tcp.dc._msdcs.joos.int
nltest /dsregdns
ipconfig /registerdns
Benutzer- und Computerkonten mit PowerShell prüfen
Für einen Überblick über die Infrastruktur dienen:
Get-ADDomainController | fl HostName,IPv4Address,OperationMasterRoles,IsGlobalCatalog,OperatingSystem
Die Ausgabe liefert alle DCs mit IP, FSMO-Rollen, GC-Status und Betriebssystemversion. Ob die Server funktionieren, lässt sich ebenfalls in der Befehlszeile und der PowerShell testen. In einer Testumgebung mit Subnetz 255.255.0.0/16 und DC bei 10.0.1.230 wird folgendermaßen die Erreichbareit geprüft:
ping dc01.joos.int
ping 10.0.1.230
nltest /dclist:joos.int liefert eine Liste aller bekannten DCs der Domäne. nltest /dsgetsite zeigt, welchem Standort der DC zugeordnet ist.
Für die DNS-Konfiguration der Clients wird PowerShell eingesetzt:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("10.0.1.230")
Dieser Befehl setzt den DNS-Server explizit auf dc01. -InterfaceAlias bezeichnet das Netzwerkinterface, -ServerAddresses erwartet ein Array der zu setzenden DNS-Server.