Ex55CSV2AD

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.

Dieses Script ist nur dann hilfreich, wenn Sie die Empfänger einer fremden Exchange 5.5 Organisation in ihre Exchange 2000/2003 Organisation als Kontakte importieren wollen.

Diese Script ist nicht erforderlich, um eine InterOrg Migration durchzuführen. Hierzu ist der Active Directory Connector das richtige Werkzeug. Für die Migration zwischen Organisationen kann Ex55CSV2AD nützlich sein, behindert aber den Einsatz des MailMig, da die angelegten Kontakte die Mailadressen blockieren.

Problemstellung

Exchange kennt den Begriff der "Organisation" als Grenze aller Exchange Server in einem Unternehmen. Viele Firmen haben sich an die Bequemlichkeit gewöhnt, dass Exchange 5.5 aber auch Exchange 2000/2003 automatisch die Empfänger und Verteiler in einem globalen Adressbuch vorhält und den Anwendern anbietet. Allerdings ist die Organisation auch die Grenze dieser Replikation.

Arbeiten nun zwei Firmen eng zusammen, z.B.: als Zulieferer oder nach einem Zusammenschluss, so ist ein Austausch der Adressen für eine Koexistenz oft das erste Ziel vor einer eventuell späteren Migration. Weitergehende Informationen finden Sie auch auf MSXFAQ - Verbinden von Organisationen und Verzeichnisabgleich.

Einsatzbereich

Leider gab es von Microsoft lange keine entsprechenden Hilfsprogramme oder sind in Form des "Meta Directory Servers" oder "Microsoft Identity Integration Servers" sehr aufwändig. Viele Firmen haben sich daher damit beholfen, mehr oder weniger unregelmäßig die Empfänger der einen Seite in eine Datei zu exportieren und nach entsprechender Umformatierung im Ziel zu importieren. Aus jedem Empfänger der Quelle wurde dabei ein Kontakt im Ziel.

Solche "Massenimport" haben zwei wesentliche Probleme, die einen dauerhaften Einsatz erschweren.

Da sich aber eine "CSV-Datei" von Exchange 5.5 sich quasi als früher Standard etabliert hat (Seit dem Active Directory wird man eher LDIF-Datei nutzen), liest das Script EX55CSV2AD solche Dateien ein und importiert diese als Kontakte in das Active Directory.

Funktionsweise und Prinzipien

Und das funktioniert wie folgt:

Obj-Class,Directory Name,Alias Name,Display Name,E-Mail Address
Maibox,fcarius,fcarius,"Carius, Frank",ex55csv2ad@msxfaq.de
Remote,test1,test2,"Test2, User",ex55csv2adt1@msxfaq.de
DList,vl1,vl1,"Verteiler 1",ex55csv2advl1@msxfaq.de

EX55CSV2AD achtet darauf, dass wirklich nur dann Objekte aktualisiert werden, wenn sich Felder geändert haben. Es ist aber eine "One-Way"-Replikation von der CSV-Datei in das Active Directory mit dem Active Directory als "Slave". Änderungen an den Kontakten (z.B. Vorname etc.) werden bei der nächsten Replikation wieder rückgängig gemacht. Das Script nimmt ALLE Objekte aus der Quelle. Es ist nicht relevant, ob die CSV-Datei Kontakte, Mailboxen oder Verteiler enthält. Achten Sie daher darauf, dass die CSV-Datei nur die gewünschten Kontakte enthält.

Konflikte und Lösungen

Wie bei jeder Replikation kann es immer wieder zu Konflikten kommen, die möglichst automatisch gelöst werden.

Behalten Sie im Hinterkopf:
EX55CSV2AD erzeugt, verändert und löscht Objekte immer nur in der Target-OU
Das ausführende Benutzerkonto muss daher auch nur dort schreiben können.

EX55CSV2AD behandelt Konflikte wie folgt.

Quelle (CSV-Datei) Ziel (Active Directory) Ergebnis
Eintrag vorhanden kein Empfänger gefunden
  • Kontakte wird in Ziel-OU angelegt
  • Alle Informationen werden aktualisiert
Eintrag unverändert Empfänger in anderer OU
  • Es wird KEIN Kontakt erzeugt
  • Der bestehende Eintrag wird nicht verändert
  • Warnung wird ausgegeben
Eintrag unverändert Kontakt in Ziel-OU
  • Keine Veränderung der Daten
Geändertes Feld eines Eintrags Kontakt in Ziel-OU
  • Der bestehende Eintrag wird aktualisiert
  • Nur geänderte Felder werden geschrieben
Geändertes Feld eines Eintrags manuell in Ziel-OU angelegtes Objekt
  • Der bestehende Eintrag wird aktualisiert
Geändertes Feld eines Eintrags Empfänger in anderer OU
  • Es wird KEIN Kontakt erzeugt
  • Der bestehende Eintrag wird nicht verändert
  • Warnung wird ausgegeben
Eintrag in CSV-Datei
(Neu, geändert, unverändert)
Kontakt wurde in andere OU verschoben
  • Es wird KEIN Kontakt erzeugt
  • Der bestehende Eintrag wird nicht verändert
  • Warnung wird ausgegeben
Eintrag fehlt in CSV-Datei Kontakt besteht in Ziel-OU
  • Kontakt in Ziel-OU wird gelöscht
Eintrag unverändert Kontakte wurde von Hand verändert
  • Felder der Quelle werden zurück gesetzt
  • nicht in in der Quelle spezifizierte Felder werden nicht verändert
Primäre Mailadresse ändert sich Empfänger in Ziel-OU
  • Neuer Kontakte wird angelegt
  • Bestehender Kontakt wird danach gelöscht.
  • Gruppenmitgliedschaften gehen verloren !!!
Eintrag vorhanden Kontakt wurde von Hand gelöscht
  • Kontakte wird komplett neu angelegt
    (Wenn kein anderer Kontakt die Mailadresse hat)

Sollten Sie Konflikte erkennen, die ich hier nicht berücksichtigt haben sollte, dann bitte Ich um eine kurze Nachricht, damit ich die Unklarheiten auflösen kann.

Download und Installation

Das Script selbst ist ein VBScript, welches z.B. auf einem PC mittels Windows Taskplaner regelmäßig gestartet werden kann.

Verzeichnissynchronisation ist nie etwas einfaches, sondern Bedarf meist immer der Anpassung. Da dieses Skript auch ohne Rückfrage "löscht", kann bei unsachgemäßem Einsatz ein Schaden entstehen. Daher steht dieses Script hier nicht zum Download zu Verfügung.
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Das Script ist vor dem ersten Start eventuell anzupassen.

Das Script muss mit einem Benutzernamen gestartet werden, welcher sowohl die CSV-Datei lesen als auch in der Target-OU die Objekte anlegen, ändern und löschen kann und im globalen Katalog die Existenz eines Objekts mit der gleichen Maildresse überprüfen kann. Beachten Sie bitte, das das Script natürlich eine nicht ganz unbedenkliche Belastung für den genutzten Domänencontroller produzieren kann. Speziell beim ersten Durchlauf werden abhängig vom Inhalt der CSV-Datei sehr viele Kontakte angelegt.

Zur Installation und Inbetriebnahme wird das Script einfach in Ein Verzeichnis ihrer Wahl kopiert und mit den entsprechenden Parametern aufgerufen. Diese sind:

Ausgabe und Debugging

EX55CSV2AD protokolliert alle Aktionen in einer Protokolldatei und einer XML-Datei. Die XML-Datei können Sie einfach mit dem IE öffnen. Dank des ebenfalls angelegten StyleSheets wird die Anzeige ansprechend formatiert.

Es ist gut zu sehen, dass ein "Alter User" gefunden und gelöscht wurde, dass ein Benutzer mit drei Feldern erstellt und bei einem bestehenden Benutzer ein Feld aktualisiert wurde. Der letzte Benutzer hat sich nicht verändert.

Analog dazu wird in der Protokolldatei jeder einzelne Schritt abhängig von den Einstellungen der Protokollierung fest gehalten. Eine mögliche Ausgabe erfolgt auf dem Bildschirm.

Sie können im VBScript selbst die Protokollierung für den Bildschirm, die Protokolldatei und das Eventlog einstellen.

Weiterentwicklung

Der Anteil an CSV-Dateien zum Verzeichnisabgleich nimmt immer weiter ab. Für eine Weiterentwicklung sind mehrere Wege denkbar

Es ist aber nicht geplant, dieses Script zu einem bidirektionalen Verzeichnisreplikationskonnector zwischen verschiedenen Systemen zu machen. Die möglichen Konflikte und deren Behandlung ist zu umfangreich, um dies in einem Script zu lösen. Das Script wird sich daher darauf beschränken, Adressen einer Quelle in ein Ziel zur Nutzung zu importieren und mit möglichst wenig Aufwand ein eine Richtung zu synchronisieren. Alles darüber hinaus können Sie mit kommerziellen Programmen wie SimpleSync, MIIS, Metadirectory Services etc. abdecken.

Weitere Links

Keywords:LDAP Interorg Kontakte Synchronisierung Dirsync