(Dieser Artikel bezieht sich auf Windows Server 2003 R2; die meisten Hinweise sind aber auch für andere Versionen anwendbar.)
DCDIAG überprüft den Status der Domänencontroller in Active Directory auf ihre Funktionsfähigkeit. Es prüft die Replikation, die Topologie und Funktion von Active Directory und liefert eine Zusammenfassung der Ergebnisse mit detaillierten Informationen zu jedem getesteten Domänencontroller und eine Diagnose etwaiger Sicherheitsfehler. Des Weiteren wird DNS (Domain Name System) bezüglich der folgenden Punkte geprüft: Konnektivität, Verfügbarkeit von Diensten, Weiterleitungen und Stammhinweise, Delegierung, dynamische Updates, Registrierung von Locatoreinträgen, externe Namensauflösung und Unternehmensinfrastruktur.
DCDIAG.exe ist ein Kommandozeilen-Programm und befindet sich mit weiteren nützlichen Tools wie NetDIAG, NetDOM, LDP etc. in den „Windows Support Tools“, die sich wiederum auf der Windows-CD im Verzeichnis „Support\Tools“ befinden (SUPTOOLS.MSI). Es sollte darauf geachtet werden, dass man immer die richtige Version der Tools zum Betriebssystem benutzt, also nicht etwa das DCDIAG von Windows 2000 in einem Netzwerk unter Windows 2003 anwendet.
Ausgabe des Befehls „DCDIAG“
Hinweis: Diese Ausgabe von DCDIAG wurde ohne eine weitere Angabe eines Schalters ausgeführt.
Domain Controller Diagnosis
Performing initial setup:
Done gathering initial info.
Doing initial required tests
Testing server: Mainz\MZDCON01
Starting test: Connectivity
……………………. MZDCON01 passed test Connectivity
Mit diesem Test wird überprüft, ob der Domänencontroller im DNS registriert ist, ob er per Ping erreichbar ist und ob er per RPC (= Remote Procedure Call) bzw. LDAP (= Lightweight Directory Access Protocol) erreichbar ist.
Hierdurch wird festgestellt, ob eine Verbindung zum Active Directory besteht, der mit dem Eintrag „passed“ quittiert sein muss.
Doing primary tests
Testing server: Mainz\MZDCON01
Starting test: Replications
……………………. MZDCON01 passed test Replications
Hier geht es um die Überprüfung der zeitgerechten Replikation mit weiteren Domänencontrollern und ob Replikationsprobleme mit anderen DCs bestehen. Dieser Eintrag muss auf „passed“ stehen. Wenn man erst vor kurzem (< 30 Min.) einen Domänencontroller installiert hat, kann es zu einem „failed“ kommen. Hier sollte man es nach ca. 1 Std. erneut versuchen und darauf achten, das dieser Eintrag dann zu „passed“ geändert wurde.
Starting test: NCSecDesc
……………………. MZDCON01 passed test NCSecDesc
Bei diesem Eintrag wurde geprüft, ob eine Verbindung mit LDAP zum Active Directory vorhanden ist. Dieser Test muss unbedingt mit einem „passed“ abgeschlossen werden. Falls hier kein positiver Eintrag erscheint, sondern ein „failed“, könnte dies auf ein DNS-Problem zurückzuführen sein.
Starting test: NetLogons
……………………. MZDCON01 passed test NetLogons
Hier wurde geprüft, ob eine Anmeldung am Active Directory möglich war und die Anmeldeinformationen ausreichen, um die Replikation stattfinden bzw. fortfahren zu lassen. Auch hier muss der Eintrag „passed“ erscheinen.
Starting test: Advertising
……………………. MZDCON01 passed test Advertising
Mit diesem Test überprüft DCDIAG, ob die Anmeldung am Active Directory möglich war und ob der Domänencontroller in der Lage ist, sich im Active Directory bekannt zu geben. Falls dieser Test nicht erfolgreich mit „passed“ abgeschlossen wird, kann das Problem auch darin bestehen, dass der Netlogon Dienst „hängt“ oder nicht starten konnte.
Starting test: KnowsOfRoleHolders
……………………. MZDCON01 passed test KnowsOfRoleHolders
Dieser Test prüft, ob sich der Domänencontroller zu allen fünf FSMO-Rollen im Active Directory, verbinden konnte, die sich entweder auf ihm selbst oder auf einem anderen Domänencontroller befinden. Es leuchtet unmittelbar ein, dass dieser Test selbstverständlich mit einem „passed“ beendet werden muss.
Starting test: RidManager
……………………. MZDCON01 passed test RidManager
An dieser Stelle prüft das Tool, ob der Domänencontroller, der die Rolle des RID-Masters innehat, erreichbar ist und ob die Informationen richtig sind. Auch dieser Test muss mit einem „passed“ abgeschlossen werden.
Starting test: MachineAccount
……………………. MZDCON01 passed test MachineAccount
Hier wird geprüft, ob das Computerkonto im Active Directory in Ordnung ist und ob das Computerkonto sich richtig registriert hat. Man kann den Parameter „/RecreateMachineAccount“ verwenden, um eine Reparatur zu versuchen, falls das Computerkonto fehlt. Mit „/FixMachineAccount“ kann man die Computerkontoeinstellungen korrigieren, wenn diese falsch sein sollten. Ein Testabschluss mit „passed“ ist hier zwingend erforderlich.
Tipp: Falls DCDIAG Fehler bei dem Test von „MachineAccount“ melden sollte, kann man diese mit dem Schalter /FIX beheben. Der Schalter „FIX“ behebt Fehler im SPN (Service Principal Name) des Domänencontroller-Computerkonto-Objekts.
Starting test: Services
……………………. MZDCON01 passed test Services
Hier wird überprüft, ob die Domänencontroller-Dienste laufen.
Starting test: ObjectsReplicated
……………………. MZDCON01 passed test ObjectsReplicated
An dieser Stelle wird geprüft, ob der Domänencontroller sein Computerkonto und die DSA (= Directory Service Agent)-Objekte repliziert hat. Mit den Parametern „/objectdn:dn“ mit „/n:nc“, kann man zusätzlich ein weiteres zu überprüfendes Objekt angeben. Des Weiteren wird geprüft, ob alle Objekte des Active Directory mit den anderen Domänencontrollern repliziert worden sind.
Starting test: frssysvol
……………………. MZDCON01 passed test frssysvol
Hier wird geprüft, ob der FRS (= File Replication Service) die Anmeldeskripte und GPOs im SYSVOL-Verzeichnis mit anderen Domänencontrollern repliziert hat.
Starting test: frsevent
……………………. MZDCON01 passed test frsevent
Bei diesem Test des FRSEVENT wird geprüft, ob Fehler bzw. Probleme mit dem File Replication Service bestehen. Falls die Replikation der SYSVOL-Freigabe nicht ordnungsgemäß durchgeführt werden konnte, könnte dies auf ein Problem mit den Richtlinien hindeuten.
Starting test: kccevent
……………………. MZDCON01 passed test kccevent
Hier stellt der Knowledge Consistency Checker sicher, dass dieser Domänencontroller alle weiteren Domänencontroller finden kann, um Replikationsverbindungen aufzubauen.
Starting test: systemlog
An Error Event occured. EventID: 0xC0002715
Time Generated: 05/11/2006 18:41:27
(Event String could not be retrieved)
……………………. MZDCON01 passed test systemlog
Hier wird geprüft, ob das System fehlerfrei läuft. DCDIAG prüft das SYSTEM-Eventlog und gibt die Fehlermeldungen der letzten 60 Minuten aus, was man aber natürlich auch selbst mit einem Blick in das System-Log prüfen kann.
Starting test: VerifyReferences
……………………. MZDCON01 passed test VerifyReferences
Dieser Test überprüft, ob bestimmte Systemreferenzen wie der File Replication Service (FRS) und die Replikationsinfrastruktur intakt sind.
Running partition tests on : ForestDnsZones
Starting test: CrossRefValidation
……………………. ForestDnsZones passed test CrossRefValidation
Dieser Test überprüft die Gültigkeit von Querverweisen der ForestDNSZones-Anwendungsverzeichnispartition.
Starting test: CheckSDRefDom
……………………. ForestDnsZones passed test CheckSDRefDom
Dieser Test überprüft, ob in der ForestDNSZones Anwendungsverzeichnispartition eine „reference domain“ gesetzt ist.
Hinweis: „CheckSDRefDom“ prüft, ob für die Partition eine „Security Desriptor Reference Domain (SDRefDom)" konfiguriert ist. Diese SDRefDom wird speziell bei Anwendungspartitionen verwendet, die Replikate auf DCs verschiedener Domänen im Forest besitzen können, um zu entscheiden, aus welcher Domäne der „Default Security Descriptor" verwendet werden soll.
Running partition tests on : DomainDnsZones
Starting test: CrossRefValidation
……………………. DomainDnsZones passed test CrossRefValidation
Dieser Test überprüft die Gültigkeit von Querverweisen der DomainDNSZones-Anwendungsverzeichnispartition.
Starting test: CheckSDRefDom
……………………. DomainDnsZones passed test CheckSDRefDom
Dieser Test überprüft, ob in der DomainDNSZones-Anwendungsverzeichnispartition eine „reference domain" gesetzt ist.
Running partition tests on : Schema
Starting test: CrossRefValidation
……………………. Schema passed test CrossRefValidation
Dieser Test überprüft die Gültigkeit von Querverweisen in der Schemapartition.
Starting test: CheckSDRefDom
……………………. Schema passed test CheckSDRefDom
Dieser Test überprüft, ob in der Schemapartition eine „reference domain" gesetzt ist.
Running partition tests on : Configuration
Starting test: CrossRefValidation
……………………. Configuration passed test CrossRefValidation
Dieser Test überprüft die Gültigkeit von Querverweisen in der Konfigurationspartition.
Starting test: CheckSDRefDom
……………………. Configuration passed test CheckSDRefDom
Dieser Test überprüft, ob in der Konfigurationspartition eine „reference domain" gesetzt ist.
Running partition tests on : intra
Starting test: CrossRefValidation
……………………. intra passed test CrossRefValidation
Dieser Test überprüft die Gültigkeit von Querverweisen in der Anwendungsverzeichnispartition INTRA.
Starting test: CheckSDRefDom
……………………. intra passed test CheckSDRefDom
Dieser Test überprüft, ob in der INTRA-Anwendungsverzeichnispartition eine „reference domain" gesetzt ist.
Running enterprise tests on : intra.dikmenoglu.de
Starting test: Intersite
……………………. intra.dikmenoglu.de passed test Intersite
Hier wird geprüft, ob der ISTG (= Intersite Topology Generator) arbeitet. Zudem wird abgeschätzt, wann automatisch ein anderer als ITSG ernannt wird.
Starting test: FsmoCheck
……………………. intra.dikmenoglu.de passed test FsmoCheck
Dieser Test überprüft, ob der Domänencontroller den Dienst KDC (= Key Distribution Center-Schlüsselverteilungscenter) kontaktiert und ob er einen Zeitserver, einen bevorzugten Zeitserver, einen Domänencontroller, der die Rolle des PDC-Emulators innehat, und einen globalen Katalog erreichen kann. Dieser Test prüft nicht die Erreichbarkeit aller 5 bestehenden FSMO-Rolleninhaber.
Schalter für DCDIAG
Mit dem Schalter „/V“ (Verbose) kann man sich weiterreichende Informationen anzeigen lassen, die bei der Fehlersuche nützlich sein könnten.
Der Schalter „/FIX“ hat nur Auswirkung auf den „MachineAccount“-Test. Dieser Test repariert den SPN (= Service Principal Name) auf dem Domänencontroller-Computerkonto-Objekt. Wenn Probleme mit dem Computerkonto eines DCs bestehen sollten, dürfte der Schalter /Fix der richtige sein.
Mit dem Schalter „/A“ testet man alle Domänencontroller, die sich am gleichen Standort befinden.
Mit „/E“ werden alle Server in der Gesamtstruktur getestet. Dieser Schalter überschreibt den Schalter „/A“.
Um sich nur die Fehler auf dem Domänencontroller anzeigen zu lassen, benutzt man den Schalter „/Q“.
Mit dem Schalter “ /S:<Domänencontroller>“ kann man von dem Server, auf welchem sich das Tool DCDIAG befindet, jeden beliebigen Domänencontroller testen. Das Gute daran ist, dass man nicht auf jedem Server/DC das DCDIAG ausführen muss, sondern das Ganze von einem einzigen Server aus ausführen kann.
Wenn man die Ausgabe von DCDIAG in ein Logfile haben möchte, muss nun der Schalter „/F:Logfile.txt“ angegeben werden, wobei „Logfile“ den Dateinamen des Logs darstellt und dieser natürlich geändert werden kann. Wenn man den Schalter so wie in diesem Beispiel eingibt, wird das Log in der Root von C: erstellt, also „C:\Logfile.txt“. Man kann natürlich auch mit dem Befehl „C.\dcdiag > C:\dcdiaglog.txt“ ein Logfile erstellen lassen.
Ein ähnlicher Schalter ist „/FERR:Errorlog.txt“. Dieser Befehl erstellt ein Logfile, das nur fatale Fehler enthält.
Möchte man einen einzigen Test testen, verwendet man den Schalter „/TEST:Testname“ (z.B. C:\dcdiag /test:Netlogons). Zusätzlich wird immer der Test „Connectivity“ ausgeführt, egal, welchen Test man prüfen möchte. Dies kann auch nicht abgestellt werden.
Der Schalter „/C“ (steht für Comprehensive und bedeutet ausführlich bzw. übergreifend) kann verwendet werden, wenn man detaillierte Angaben erhalten möchte.
Möchte man wissen, ob ein Domänencontroller z.B. einen GC oder Key Distribution Center zur Verfügung stellt, so gilt es folgenden Parameter einzugeben „/V /S:<Domänencontrollername> /test:advertising“
Mit „/U:Domäne\Benutzername /P:{* | Password | ""} “ kann man ein anderes Benutzerkonto angeben, falls man derzeit mit eingeschränkten Rechten angemeldet sein sollte.
Falls das Benutzerkonto kein Kennwort haben sollte, gibt man <„“> ein. Möchte man das Kennwort nicht sofort eingeben, kann man zunächst auch <*> eingeben. Dann wird man, nach Bestätigen des Befehls, nach dem Kennwort gefragt.
Beispiel
Dieses Skript erzeugt ein Log (als TXT) und speichert dieses unter C:\DCDIAG.txt ab. Eine eventuell vorher bestehende DCDIAG.TXT auf C:\ wird dabei gelöscht. Damit wird jeder DC in der Gesamtstruktur ausführlich getestet. Wenn der Test durchlaufen und das Log erstellt wurde, öffnet sich das Log automatisch.
Evtl. muss man den Pfad zum Programm-Verzeichnis (Support Tools) entsprechend der eigenen Umgebung anpassen.
@echo off
c:
cd \
cd "program files\support tools"
del c:\dcdiag.txt
dcdiag /e /c /v /s:DC-Name /f:c:\dcdiag.txt
start c:\dcdiag.txt
Eine Übersicht der einzelnen möglichen Parameter bekommt man mit dem Schalter „/?“ oder hier: http://technet2.microsoft.com/WindowsServer/en/Library/39d6c272-5c2e-4db0-a79a-4d8fbf52dd411033.mspx?mfr=true
Weitere Beispiel-Ausgaben von DCDIAG kann man hier sehen:
http://technet2.microsoft.com/WindowsServer/en/Library/824f106c-a90b-421b-aa44-ebc1403c8b4c1033.mspx?mfr=true
http://faq-o-matic.net/?p=608