Tools: GalComp

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. Für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanzieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

GalComp ist ein Hilfsprogramm um zwei globale Adressbücher zu vergleichen. Bei einer Migration und Koexistenz von Exchange 5.5 und Exchange 2000/2003 ist der Abgleich der globalen Adressliste zwischen den beiden Welten besonders wichtig. Diese Aufgabe übernimmt normalerweise der Active Directory Connector. Wenn alles korrekt läuft, dann ist die globale Adressliste von Exchange 5.5 identisch mit der globalen Adressliste, welche das Active Directory bereitstellt, identisch.

Ist diese Liste jedoch nicht identisch, dann kann das z.B. eine Replikationsinkonsistenz sein aber ebenso ein Konfigurationsfehler oder Probleme mit der Replikation durch den ADC. Die Aufgabe dieses Scripts ist daher die GAL von zwei Systemen zu lesen, zu vergleichen und die Unterschiede zu melden.

GalComp vergleich nur die GAL aber muss aufgrund von Systembeschränkungen natürlich Abstriche machen:
Es gibt Fälle, die nicht erfolgreich "gefunden" werden können und Objekte, die in der GAL identisch sind, aber einzelne Felder (z.B.: Telefonnummer) nicht übereinstimmen.
GalComp vergleich nicht die einzelnen Feldinhalte, weil es dazu zu jedem Exchange 5.5 Server eine direkte Verbindung aufbauen müsste, was in vielen Exchange 5.5 Umgebungen nicht möglich ist und eine hohe Last verursacht.
GalComp ist kein Ersatz für eine Kontrolle des ADC (z.B. CheckADC), sondern ein Hilfsmittel zur mengenmäßigen Betrachtung der Einträge in der GAL.
GalComp erkennt nicht, wenn einmal replizierte Objekte in der Folge nicht mehr repliziert werden, z.B.: weil das dazugehörige CA gelöscht wurde oder nicht mehr läuft.

Funktionsweise

Der Vergleich der GAL beruht auf der Funktion des ADCs, welcher die Objekte zwischen den beiden Verzeichnisdiensten abgleicht und entsprechende Metadaten im Feld ADCGlobalNames hinterlegt. Das Script verbindet sich dazu per LDAP mit den beiden Verzeichnisdiensten und liest entsprechende Informationen aus, die dann gegeneinander abgeglichen werden.

Hier ein generelles Flussdiagramm der Funktion.

Die Objekte werden in einem Dictionary-Objekt gespeichert und verglichen. Unstimmigkeiten werden in eine XML-Datei zur weiteren Auswertung ausgegeben. Bei Bedarf kann das Skript erweitert werden, dass es auch ausgewählte Feldinhalte von zusammengehörenden Objekten vergleicht. Dies ist aktuell aber noch nicht ausgearbeitet.

Die Tücken sind im Detail

Das Flussdiagramm sieht so einfach aus, aber dennoch ist der Weg zum Ergebnis etwas steiniger als dies zu erwarten wäre:

Auch dieses Skript ist nicht ganz frei von Problemen, denn es kann theoretisch sein, dass ein Exchange 5.5 Objekt mit seinem DN gar nicht im AD in msExchADCGlobalNames auftaucht. Das Script macht keinen Any to Any -Vergleich aller ADCGlobalNamens-Einträge.

Download und Einsatz

Das Skript benutzt den Windows Script Host, welcher auf dem System installiert sein muss und verbindet sich per LDAP mit einem GC ihrer Domäne und einem Exchange 5.5 Server, welchen Sie angeben müssen.

Das Skript nutze ich bei Kunden während einer Migration. Es ist aktuell nicht "frei" verfügbar, sondern wird von meinen Kollegen und mir bei Projekten oder Supportfällen zur Problemlösung eingesetzt.
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Das Script muss mehrere Parameter kennen, um zu gestartet werden zu können. Diese Parameter sind im Script selbst und nicht über die Kommandozeile anzugeben. Sie werden als Konstanten am Anfang gepflegt:

const conEX55LDAPPath= "LDAP://10.1.1.55:388"
const conEX55USER = "cn=Administrator,dc=MSXFAQ,cn=Admin"
const conEX55PASS = "password"

const conADLDAPPath= "GC://10.1.1.55"
const conADUSER = "Administrator"
const conADPASS = "password"
const conOutputFiler = "[status!='Matched']" ' XML Filterkriterium'

Nach der Anpassung der Parameter im Script können Sie dieses einfach mit "CSCRIPT" starten.

cscript galcomp.vbs

Die Laufzeit hängt von der Geschwindigkeit ihres Netzwerks, der Server, dem ausführenden PC und zum Großteil von der Anzahl der Objekte ab.

Ausgabe

Die XML-Datei enthält wieder alle Informationen des Exports und Vergleichs und kann z.B. mit dem Internet Explorer und dem ebenfalls angelegten Stylesheet angezeigt werden.

Über das Filterkriterium im Skript kann das Stylesheet so angepasst werden, dass nur die Objekte ohne ein "Matched" angezeigt werden. In der XML-Datei sind aber immer alle Daten enthalten.

Weiterentwicklung

Weitere Links

Keywords:Galcomp Tools