Mittwoch, 18. April 2012

Outlook-Signatur aus AD-Informationen erstellen (LDIFDE)

Was soll erreicht werden:
Der User soll ein Skript ausführen, welches ihm eine Outlook-Signatur (firmeneinheitlich) erstellt. Dabei soll (im Gegensatz zu meinem alten Skript) keine User-Aktion notwendig sein, jede Information kann dynamisch aus dem Active Directory bzw. dem LDAP geholt werden (Name, Telefon, Standort, Position usw.). Vorausgesetzt ist selbstverständlich, dass sämtliche benötigten Felder im AD auch für den Benutzer gepflegt sind. Für das Auslesen der Daten verwende ich LDIFDE, ein Tool, welches bei den Windows-Server-Versionen seit geraumer Zeit mitgeliefert wird. Einem Client steht diese Datei aber i. d. R. nicht zur Verfügung, man muss hier also einen zentralen Share einrichten und hinterlegen, über den LDIFDE.exe angesprochen werden kann. Beim Schreiben dieses Skripts fiel mir aber auf, das LDIFDE seit Windows Server 2008 und höher keine Unicode-Dateien mehr erzeugen kann, was das Verwenden von Umlauten unmöglich macht. Der Parameter "-u" sollte diese Funktion eigentlich erbringen, jedoch sorgt dieser (ab WS2K8) dafür, dass die erzeugte TXT-Datei gänzlich codiert wird (also das Gegenteil von dem, was man eigentlich möchte). Glücklicherweise lässt sich die LDIFDE-Version von Windows Server 2003 noch sehr gut verwenden, diese beherrscht die Unicode-Ausgabe noch. Ich habe die Datei zusammen mit dem Skript hier zum Download bereitgestellt.

Funktionsumfang des Skriptes:
- Prüfung, ob Outlook läuft > vor dem Schließen wird Skript nicht weitergeführt
- Definieren sämtlicher Pfade
- Dynamisch den Domaincontroller ermitteln, der befragt werden soll
- Textbausteine für Klartext und HTML hinterlegbar
- LDAP auslesen inkl. Umlaute via LDIFDE
- Fehlerrückgabe, welche Felder im AD nicht gepflegt sind (nur bei Muss-Feldern)
- Ordnerstruktur für Signatur wird erstellt, wenn nicht vorhanden
- Backup vorhandener Signaturen
- Generierung von HTML und TXT-Signaturen
- Bereinigung von temporär generierten Dateien

ToDo für folgende Versionen:
- Dynamisch bezogene Inhalte mit Umlauten HTML-tauglich bereitstellen
- RTF-Signatur

Hier klicken, um Skript und LDIFDE.EXE herunterzuladen.

So far

Snaker

5 Kommentare:

  1. Hallo Snaker und danke für das Teilen deines Script. Es könnte mir vermutlich bei meinem Ziel sehr gut helfen.
    Ich habe das Script zum testen lokal abgelegt sowie "echo off" und "cls" auskommentiert.

    Das script läuft bis zum genereiren der Signatur soweit ich das sehen kann korrekt ab. Dort scheitert es jedoch mit folgender Fehlermeldung: "D:\Signaturtest\ echo !GRUSS! 1>D:\Signaturtest\signaturpfad\Microsoft\Signatures\dasc.txt
    Das System kann den angegebenen Pfad nicht finden.
    Die Pfade sind korrekt anhand meiner gesetzten Variablen übernommen werden. Wenn ich den Ordner "signatures" händisch erstelle und das Script ausfhre, sehe ich dass der Ordner gelöscht wird.
    Hast du eine Idee woran das liegen könnte.
    PS: Den DELETE Befahl am Ende des scripts habe ich auskommentiert, um auszuschliessen dass deshalb der Ordner "Signatures" gelöscht wird.

    Gruss aus der Schweiz

    AntwortenLöschen
  2. Danke für den Hinweis, habe (natürlich) vor dem Veröffentlichen hier noch ein paar Zeilen modifiziert, damit keine Reste mehr auf mein Unternehmen verweisen. Dabei ist aus Versehen folgende Zeile entfernt worden, die sicherstellt, dass der Zielordner existiert:

    In GenSigAuto.bat, Zeile 158 - 163 entfernen und stattdessen das hier setzen:

    REM ==========================================
    REM Erstelle, falls nötig, den Ordner "Signatures"
    REM ==========================================
    :GENERATE
    If not exist %SIGPATH% mkdir %SIGPATH%
    setlocal enabledelayedexpansion
    chcp 1252 >nul

    Da ja in Zeile 156 nach dem Backup %SIGPATH% entfernt wurde, um später keine Probleme beim Überschreiben zu haben, trifft das Nichtvorhandensein von "%SIGPATH%" eigentlich immer zu ;)

    Hth,

    Snaker

    AntwortenLöschen
    Antworten
    1. Vielen dank, jetzt hat (in der Testumgebung) alles geklappt!

      Jetzt kommt noch der Feinschliff und die implementierung.

      Löschen
  3. Alles klar ;) Habe die downloadbare ZIP-Datei ausgetauscht, d. h. dort ist es jetzt auch gefixed.

    AntwortenLöschen
  4. Hallo Snaker,
    der Link zum Download ist leider abgelaufen, wäre esmöglich nochmal das Script zubekommen?

    AntwortenLöschen