Wer eine fremde Active-Directory-Umgebung übernimmt oder bearbeitet, steht vor der Frage, in welchem Zustand sich diese befindet. Neben der Konfiguration der Umgebung kann es auch relevant sein, ob das AD-Schema erweitert wurde. Leider ist es nicht ganz einfach, Schema-Erweiterungen nachträglich ausfindig zu machen, wenn sie nicht ordentlich dokumentiert worden sind. Mit ein wenig manuellem Aufwand lassen sich die Informationen aber relativ schnell herausfinden.
Die Vergleichs-Methode
Der Weg geht über den Vergleich der Produktionsumgebung mit einer Referenzumgebung. Im ersten Schritt installiert man also ein Active Directory in eine virtuelle Umgebung, das denselben Service-Pack- und Patchlevel hat wie die Produktionsumgebung. Falls Applikationen eingesetzt werden, von denen bekannt ist, dass sie das AD-Schema erweitern (z. B. Exchange), sollten auch die Schema-Erweiterungen dieser Applikationen installiert werden.
Der zweite Schritt besteht im Export des Schemas beider Umgebungen. Dazu führt man auf einem Domänencontroller der Produktionsumgebung folgendes Kommando in der Eingabeaufforderung durch (das ganze Kommando bildet eine zusammenhängende Zeile):
csvde -f D:\temp\schema.txt
-d „CN=Schema,CN=Configuration,DC=DOMAIN,DC=TLD“
– r „(|(objectClass=attributeSchema)(objectClass=classSchema))“
-l „name,whenCreated,whenChanged,mayContain,
mustContain,objectClass,objectCategory,governsID,
subClassOf,attributeID,isSingleValued,lDAPDisplayName“
Der Dateipfad „D:\temp\schema.txt“ kann natürlich an die realen Pfade angepasst werden. Ebenso muss statt „DC=DOMAIN,DC=TLD“ der LDAP-Pfad der echten Domäne angegeben werden.
Dasselbe Kommando wird nun in der Referenzumgebung ausgeführt.
Im dritten Schritt werden beide Textdateien in Excel als CSV-Dateien geöffnet (Trennzeichen: Komma). Für beide Dateien wird in Excel dieselbe Sortierung eingestellt (z. B. zuerst nach „objectClass“, dann nach „name“), und dann werden beide nebeneinander angezeigt. So lassen sich die Unterschiede der Schemata (Klassen und Attribute) schnell ausfindig machen. Dazu eignen sich die Funktionen Anordnen und Nebeneinander vergleichen aus dem Fenster-Menü von Excel (unter Excel 2007 woanders zu finden) sehr gut.
Um den Vorgang zu vereinfachen, habe ich einige Schema-Exportdateien im CSV-Format vorbereitet, die als Referenz dienen können. Vor derm Vergleich sollte evtl. der Domänenname (lautet auf „DC=faq-o-matic,DC=net“) geändert werden, um automatisierte Vergleiche zu vereinfachen. Die Dateien finden sich hier:
AD-Schema-Export als Grundlage für Schema-Vergleiche (137,8 KiB, 4.301-mal heruntergeladen, letzte Änderung am 17. Juli 2008)
Update 21. 10. 2007: Um das Ganze noch einfacher zu machen, habe ich ein Skript gepostet, das den Vergleich beider Exportdateien automatisiert. Der manuelle Vergleich mit Excel kann so entfallen. Mehr dazu: Schema-Versionen vergleichen
Die dsquery-Methode
Dean Wells hat ein Skript geschrieben, das mit Hilfe von repadmin.exe aus den Support Tools und dsquery.exe von Windows Server 2003 einen Vergleich des aktuellen Schemas mit dem Installationszustand erzeugt. Damit lassen sich auch Modifikationen an Standardobjekten identifizieren. Vorsicht: Das Skript erzeugt viele Daten, insbesondere wenn Exchange oder andere große Schema-Erweiterungen installiert wurden. Der Download findet sich hier: http://www.activedir.org/Downloads/Files/SchemaDiff.zip
(Danke für den Hinweis an Norbert Fehlauer)
http://faq-o-matic.net/?p=479