CSV2Mailcontact

Auf der Seite MiniSync habe ich ein VBScript beschrieben, welches per LDAP die Postfächer ausliest und in einem anderen Forest als Kontakte anlegt. Lange Jahre hat das Skript gute Dienste getan aber je mehr Exchange 2007/2010 Server entstehen, desto weniger ist VBScript noch geeignet, denn diverse direkte LDAP-Modifikationen sind nicht mehr erlaubt. Dafür gibt es einen umfangreichen Satz von Commandlets. Da wurde es Zeit für eine Powershell-Version.

Die erste Version liest aber nicht mehr direkte per LDAP eine Quelle aus, da auch Firmen mittlerweile verteilter und verbundener sind. Eine Firma könnte durch aus die Empfänger eines Zulieferers bei sich pflegen wollen oder Kunden aus ERP als Kontakte in Exchange nutzen wollen. Gerade mit der Trennung von Empfänger über Adress book Polices kann dies durchaus interessant sein.

Grundfunktion

CSV2MailContact macht ziemlich genau das, was der Name suggeriert: Es liest eine CSV-Datei ein und pflegt mit den Daten die Kotnakte in einer Ziel-OU.

Achtung: Das Skript ist keine "Lösung", sondern ein Baustein, der angepasst werden muss. Sie müssen auf jeden Fall die Zuordnung der Felder codieren. Zudem löscht das Skript in der ZielOU alle Objekte, die nicht in der CSV-Quelle enthalten sind.

Auch sind aktuell die Überwachungsfunktionen eher rudimentär, d.h. hier kann sicher noch einiges passieren. Aber Kontakte aus einer CSV-Datei werden im Active Directory als Mailcontacts angelegt und können in Exchange genutzt werden. Bei einem erneuten Lauf werden Felder auch aktualisiert. Und nach jedem Update werden die Objekte in der Ziel-OU, welche nicht durch den Import gekommen oder aktualisiert wurden, wieder entfernt. Um dies zu erreichen wird der DistinguishedName der verwalteten Zielobjekte im einer Hashtable gespeichert und am Ende wieder "abgehakt".

Einschränkungen

Die Grenzen dieses einfachen Skripte erkennen Sie am besten, wenn Sie die Einschränkungen und Problemfälle kennen.

Mit diesen Informationen sollten Sie also wirklich das Skript nur als "One-Way" Abgleich in Kontakte im Ziel in eine extra dafür bereit gestellte OU vorsehen.

Weiterentwicklung

Trotz dieser systembedingten Einschränkungen kann das Skript durchaus in Umgebungen auch als Lösung arbeiten. Dennoch möchte ich zukünftig die ein oder andere Verbesserung noch einbauen, wenn ich die Zeit dazu finde, z.B.

Download

Beachten Sie, dass das Powershell-Skript ein Rahmen für eine weitere eigene Entwicklung ist. Sie müssen zumindest die Felder der CSV-Datei, welche Sie im Ziel übertragen wollen, auch im Skript codieren. Zudem ist es oft ratsam, auch bestimmte Felder zu errechnen, z.B.: den Firmenname im Displaynamen zu hinterlegen oder die Firma gleich vorzugeben.

csv2mailcontact.1.0.ps1.txt

Weitere Links

Keywords:Minisync Dirsync