CheckRUS

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.

Das Programm RUSMon hat die Aufgabe, anhand des Eventlog alle Veränderungen des RUS an Objekten zu protokollieren. Diese Analyse ist für eine Statusanalyse natürlich nicht geeignet. Besonders wenn Sie mehrere RUS-Instanzen nutzen, dann ist es hilfreich zu wissen, wie weit der RUS aktuell hinten den aktuellen Objekten zurück hängt. Dies ist die Aufgabe von CheckRUS.

Eine Version für MOM 2005 finden Sie auf CheckRUS mit MOM
Lesen Sie trotzdem erst die Hintergründe auf dieser Seite.

Die Hintergründe

Wie auf Exchange RUS ausführlich beschrieben, müssen Sie pro Domäne mindestens einen RUS installieren, welcher regelmäßig nach geänderten Objekten sucht. Alle geänderten Objekte werden dann vom RUS kontrolliert, ob für Exchange spezifische Einstellungen zu tätigen sind. Geänderte Objekte erkennt der RUS dadurch, dass er sich die USN (Unique Sequence Number) des letzten Durchlaufs merkt. Jede Änderung im Active Directory wird mit solche einer aufsteigenden Nummer versehen.

Das Hilfsprogramm CheckRUS macht nun nichts anderes, als sich eine Liste der Empfängeraktualisierungsdienste zu generieren und die von dem RUS zuletzt bearbeitet USN und die dazugehörige USN des Domänen Controllers zu vergleichen und zu visualisieren. Eigentlich ganz einfach aber höchst effektiv. Das gleiche macht übrigens auch ExBPA und warnt, wenn mehr der Abstand größer 5000 ist.

CheckRUS ist zuerst als VBScript-Lösung entstanden. Diese Script kann zusätzlich noch die Liste der ausstehenden Objekte ausgeben.  Da es für Administratoren aber nicht immer einfach ist, auf ihrem PC zu arbeiten, gibt es auch eine ASP-Variante, die Sie auf einem IIS installieren können. Dann können Sie mit jedem Webbrowser den aktuellen Status erfragen.

Voraussetzungen

Voraussetzungen für den Einsatz sind.

  • Rechte auf Exchange
    Das Script muss in der Exchange Konfiguration das Feld "msExchServer1HighestUSN" bei den Empfängerrichtlinien lesen können. Diese liegen im globalen Bereich. Insofern reicht es, wenn das Script LESE-Rechte auf die Organisation hat.
  • Rechte auf die DCs
    Das Script verbindet sich weiterhin mit den gleichen Domänen Controllern, die auch vom RUS genutzt werden. Auch hier muss das Script auf der RootDSE das Feld "highestCommittedUsn" lesen können
  • Windows Scripting Host bzw. ASP mit ADSI
    Das Script funktioniert nur auf Windows Systeme, die Mitglied der Domäne sind und per LDAP auf die entsprechenden Domänen Controller zugreifen können. für den Einsatz des ASP-Scripts muss der Windows Scripting Host installiert sein.
  • Exchange Tools nicht erforderlich !
    Das Script nutzt reine LDAP-Abfragen. Es muss daher nicht auf einem Exchange Server gestartet werden. Es benötigt weder Outlook noch andere für Exchange spezifische Komponenten.
  • Anpassungen
    Nicht zu vergessen ist, dass Sie den Namen der Exchange Organisation im Code anpassen müssen.  Zwar könnte ich auch diese Information einfach per LDAP auslesen, aber dann würden viele Leute das Script einfach blind starten ohne die erforderlichen Anpassungen durchzuführen

Das Script schreibt nie etwas in das Active Directory, sondern erzeugt nur Bildschirmausgaben, Protokolldateien oder HTML-Ausgaben auf dem Webbrowser.

CheckRUS.VBS

Die wichtigsten Daten zum Script:

  • Ausgabe
    Die Ausgabe des VBScripts erfolgt sowohl auf den Bildschirm als auch in eine XML-Datei. für die XML-Datei habe ich eine passende XSL-Transformation beigelegt, damit diese ziemlich genau so aussieht, wie die ASP-Version. Einer Weiterverarbeitung steht nichts im Wege.
  • Debugging
    Sie können im Script selbst mehrere Debuglevel einstellen, die einmal die Ausgabe auf den Bildschirm und in eine eigene Debugdatei steuern. Wenn Sie das Script später permanent einsetzen, dann sollten Sie das Debugging auf 0 stellen.
  • Start
    Nach der Anpassung der Exchange Organisation und der Pfade für die Ausgabe können Sie das Script einfach starten.  Nutzen Sie am besten CSCRIPT dafür, da ansonsten jede Bildschirmausgabe als Messagebox aufpoppt und erst weg geklickt werden muss. Eine Kommandozeile muss nicht übergeben werden

cscript checkrus.vbs

Der Aufruf in meiner virtuellen Umgebung liefert folgende Ausgabe:

Sie sehen am Bildschirm die beiden RUS-Einträge mit den unterschiedlichen USN-Nummern. Zusätzlich wird hier noch ausgegeben, welche Objekte der RUS noch nicht bearbeitet hat. Die dazugehörige XML-Datei sieht wie folgt aus:

Ich habe die Datei natürlich etwas "hübsch" gemacht. Computer stören sich nicht an fehlenden umbrüchen, so dass die Datei selbst eher einer Textschlange gleicht. Wenn Sie die XML-Datei als Ausgabe einfach doppelt anklicken, wird der Internet Explorer zusammen mit der Transformation CHECKRUS.XSL gestartet.

Ich will Sie nun nicht länger aufhalten. Hier die Dateien zum Download

checkrusV1.3.vbs Das VBScript zum Ausführen
checkrus.xml Eine Muster XML-Datei. Das Script erstellt diese neu mit ihren Daten
checkrus.xsl Die Transformation zum Anzeigen der XML-Datei

Bitte ändern Sie die Erweiterungen der Dateien wieder auf den ursprünglichen Namen ab.

CheckRUS.ASP

Weil Heute alles mit Web und Internet arbeitet und der Weg von VBScript zu ASP nur sehr kurz ist, habe ich auch eine ASP-Variante entwickelt. Sie können diese auf einem beliebigen IIS (4.5.6) einsetzen, solange dieser ASP unterstützt. Aber es sind noch einige weitere Dinge zu beachten:

  • Eigenes virtuelles Verzeichnis anlegen
    Dies ist zwar nicht zwingend, aber für die meisten Administratoren einfacher zu nutzen, da im IIS einige Einstellungen erforderlich sind, die nur auf Verzeichnissen möglich sind
  • ASP-Datei einkopieren
    Kopieren Sie dann die ASP-Datei in diese Verzeichnis, z.B.: als DEFAULT.ASP
  • ASP aktivieren
    Speziell beim IIS6 müssen Sie meist erst die Nutzung von ASP frei schalten.
  • Authentifizierung
    Das Script muss mit einem berechtigen Benutzer auf das Active Directory zugreifen. Nun könnte ich im Script selbst einen Benutzernamen mit Kennwort hinterlegen, was aber kein guter Stiel ist. Zudem soll sicher nicht jeder Mitarbeiter den Status "ihres" RUS auslesen können. Daher sollten Sie den IIS so konfigurieren, dass er den Zugriff auf diese ASP-Seite nur berechtigten Mitarbeitern erlaubt. Schalten Sie dazu die anonyme und die integrierte Anmeldung ab und statt dessen die Basisauthentifizierung an. Damit ihre Kennwort nicht im Klartext abgehört werden kann, sollten Sie ein SSL-Zertifikat einrichten und erzwingen.
  • ApplicationPool
    Speziell der IIS6 erlaubt es, für Verzeichnisse eigene Anwendungspools zu erlauben, um die Ressourcenbelastung, Sicherheit und andere Einstellungen feiner zu konfigurieren. CheckRUS benötigt keinen eigenen Applicationspool, das es problemlos mit dem "DefaultAppPool" funktioniert.

Nun sind sie schon ganz nahe am Ergebnis. Laden Sie sich die Datei herunter und vergessen Sie nicht im Code auch hier den Namen der Exchange Organisation auf ihren Namen anzupassen:

checkrusv1.0.asp
Bitte in das virtuelle Verzeichnis checkrus kopieren und umbenennen

Den Status erhalten Sie, in dem Sie nun einen Webbrowser starten und auf die URL des Webservers gehen. In meinem Beispiel ist das:

Sollte warum auch immer ein Fehler auftreten, so können Sie auch hier eine Diagnosefunktion aktivieren. Hängen Sie einfach ein "?dbg=true" an die URL an, damit das ASP-Script erweiterte Meldungen ausgibt. Die ASP-Seite gibt keine XML-Datei oder Debuginformationen in einer Datei aus.

CheckRUS mit MOM

Mittlerweile gibt es auch eine Version für die Integration in MOM2005, um automatische die Funktion des RUS überprüfen zu lassen. Siehe CheckRUS mit MOM

Erweiterung

  • ASP.NET und .NET Anwendung
    VBScript und ASP waren gestern. Insofern bietet es sich wunderbar an, dieses einfache Script in Form einer ASP.NET oder ASPX-Anwendung zu entwickeln. Vielleicht wird das ja mein zweites Projekt nach einem "Hello World"
  • Echtkontrolle der Replikation
    Das Programm prüft nur die USN des RUS in Verbindung mit dem dazugehörigen DC. Um wirklich eine Aussage zur Aktualität treffen zu können, müssten auch die anderen DC geprüft werden, in wie weit diese die zuletzt geänderten Objekte schon repliziert haben. Dies geht aber dann mehr in Richtung einer Replikationskontrolle des Active Directory

Weitere Links