Outlook-Signatur mit Active Directory-Daten – VBS-Skript

[Update]: Dieser Beitrag wurde am 26. Juli 2021 aktualisiert.

Das Einrichten einer E-Mail-Signatur für alle Outlook-Anwender in der Organisation ist sehr aufwändig, insbesondere wenn es händisch erledigt werden muss. Zudem führt jede Änderung dazu, dass man wieder von vorn anfangen muss.

Aus diesem Grund greifen Systemadministratoren oftmals zu zentralisierten Lösungen. Ein möglicher Ansatz ist ein Log-on-Skript, gepusht auf die Workstations via Group Policy Object. Loggt sich der Enduser ein, zieht sich das Skript Informationen über die betreffende Person aus dem Active Directory und fügt in Outlook eine personalisierte E-Mail-Signatur an. Nachstehend finden Sie eine Anleitung, wie Sie so ein Skript erstellen.

Outlook-Signatur mit Active Directory-Daten – VBS-Skript

Skripterstellung

Zunächst benötigen Sie ein VBS-Skript, das in Outlook Signaturen anfügt. Der unten stehende Beispielcode liest Anwenderdaten aus dem Active Directory aus. Diese Daten erscheinen anschließend in der Signatur. Das Skript fügt die Signatur in neuen E-Mails und Antworten an.

On Error Resume Next

Set objSysInfo = CreateObject("ADInformation")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
If objUser Is Empty Then _ 
MsgBox "No connection with LDAP information.", _ 
vbCritical, "Error": Exit Sub

strName = objUser.FullName
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber

Set objWord = CreateObject("Word.Application")

Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature

Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

' Beginning of signature block

objSelection.TypeText strName & ", " & strTitle
objSelection.TypeParagraph()
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
objSelection.TypeText strCompany
objSelection.TypeParagraph()
objSelection.TypeText strPhone

' End of signature block

Set objSelection = objDoc.Range()

objSignatureEntries.Add "AD Signature", objSelection
objSignatureObject.NewMessageSignature = "AD Signature"
objSignatureObject.ReplyMessageSignature = "AD Signature"

objDoc.Saved = True
objWord.Quit

Den Code kopieren Sie einfach in einen Texteditor (z.B. Windows Notepad) und speichern ihn mit VBS-Dateierweiterung.

Zum Test führen Sie das Skript auf einer Workstation mit installiertem Outlook (stellen Sie sicher, dass Outlook nicht grade ausgeführt wird) aus. Sobald Sie Outlook öffnen und eine neue Nachricht erstellen, sollte sie eine Signatur enthalten, welche dem nachstehenden Beispiel ähnelt:

Outlook: Neue E-Mail mit geskripteter Signatur

Zum Anpassen der Signatur ändern Sie den Skriptcode zwischen ‘ Beginning of signature block und ‘ End of signature block. Mal angenommen, die E-Mail-Adresse des Anwenders soll am Ende der Signatur erscheinen. Dazu fügen Sie in den Signaturcode folgende Zeile ein:

objSelection.TypeParagraph()
objSelection.TypeText strEmail

Der Signaturcode sieht im Resultat wie folgt aus:

' Beginning of signature block

objSelection.TypeText strName & ", " & strTitle
objSelection.TypeParagraph()
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
objSelection.TypeText strCompany
objSelection.TypeParagraph()
objSelection.TypeText strPhone
objSelection.TypeParagraph()
objSelection.TypeText strEmail

' End of signature block

Um in die Signatur statischen Text einzufügen, also solchen, der nicht aus dem Active Directory gezogen wird, ersetzen Sie den Platzhalterteil im Befehl objSelection.TypeText (z.B. strEmail) durch Ihren Text in Anführungszeichen. Das nachstehende Beispiel enthält einen zusätzlichen Umweltschutz-Disclaimer:

' Beginning of signature block

objSelection.TypeText strName & ", " & strTitle
objSelection.TypeParagraph()
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
objSelection.TypeText strCompany
objSelection.TypeParagraph()
objSelection.TypeText strPhone
objSelection.TypeParagraph()
objSelection.TypeText strEmail
objSelection.TypeParagraph()
objSelection.TypeText "Please consider the environment before printing this message."

' End of signature block

Verteilung der Signatur via Gruppenrichtlinie

Um das Skript automatisch auf alle Workstations in der Organisation zu pushen, bedient man sich am besten einer Gruppenrichtlinie. Dadurch bekommt jeder Anwender seine Signatur zugeteilt, sobald er sich an seinem PC einloggt.

Zunächst melden Sie sich an Ihrem Server an und klicken Sie auf den Menü-Button Start, Administrative Tools, Group Policy Management. Alternativ tippen Sie den Befehl gpmc.msc in das Suchfeld unter Start-Menü ein. Das Hauptfenster der GPO-Konsole wird geöffnet:

Group Policy Management

Links erweitern Sie das Verzeichnis mit dem Namen Ihres Servers, Group Policy Objects. Mit der rechten Maustaste klicken Sie auf Default Domain Policy und gehen Sie auf Edit.

Domain Policy Objects

In dem Group Policy Management Editor links erweitern Sie User Configuration, Policies, Windows Settings, und gehen Sie auf Scripts (Logon/Logoff).

Group Policy Management Editor

Als Nächstes klicken Sie 2x auf die Logon-Option rechts, um das Fenster Logon Properties zu öffnen. Klicken Sie auf den Button Show Files…, um den Ordner mit Skripten zu öffnen. Kopieren Sie Ihr VBS-Skript in den Ordner. Im Fenster Logon Properties klicken Sie auf den Button Add…, Browse… und wählen Sie das neue Skript aus.

Logon Properties

Ihre Einstellungen bestätigen Sie mit OK.

Das war’s schon – sobald sich Ihre User an deren Workstations anmelden, greift das Skript und hängt in Outlook eine einheitiche Signatur mit Absenderdaten aus dem AD an.

Einschränkungen und wie man sie umgeht

Die Methode erweist sich als praktisch, sie hat allerdings einige Makel:

  • Anwender können ihre Signaturen bearbeiten, sodass der einheitliche Look Ihrer Geschäftskorrespondenz ausgehebelt wird.
  • Diese Signaturen sind nur in Outlook für Windows verfügbar.
  • Jede Änderung in der Signatur erfordert, dass sich alle User ab- und wieder anmelden, damit das Skript neu geladen wird und das neue Format greift.
  • Die Anpassung des Formats ist ein wenig aufwändig und erfordert Programmierkenntnisse.
  • Der Vorgang erfordert administrativen Zugang zum Server.
  • Es gibt keine Möglichkeit, die Custom- / Extension-Attribute oder bedingte Platzhalter zu verwenden, um die Integration mit den Tools zum Messen der Kundenzufriedenheit zu automatisieren.
  • Diese Methode wurde nicht mit LDAPS getestet. Sie können aber frei prüfen, ob sie mit dem Port 636 funktioniert.

Diese Hürden lassen sich mit Lösungen wie die CodeTwo Exchange Rules, CodeTwo Exchange Rules Pro (für den lokalen Exchange Server) oder CodeTwo Email Signatures for Office 365 (für Microsoft 365) überwinden. Sie bieten dem Anwender viele zusätzliche Vorteile, wie z.B. eine leicht zu bedienende Oberfläche für Signaturtemplates und Regeln:

  • Integrierte Testfunktion ermöglicht Vorschau der Signatur, noch bevor sie produktiv angewendet wird,
  • Unterstützung für alle E-Mails, die den Transportdienst von Exchange passieren, egal von welchem Mailclient sie gesendet werden,
  • Fernzugriff auf Regeln und Templates. Auf diese Weise kann die Gestaltung beispielsweise an Ihr Marketingteam delegiert werden, ohne dass kritische Serverfunktionen aus der Hand gegeben werden,
  • Vorinstallierte Bibliothek mit fertigen Templates,
  • Unterstützung für alle E-Mail-Formate – egal ob HTML, Plain Text oder RTF,
  • Alle Programmfunktionen können 30 Tage unentgeltlich getestet werden.
  • u.v.m.

6 thoughts on “Outlook-Signatur mit Active Directory-Daten – VBS-Skript


  1. Das Skript ist seit vielen jahren bei uns im Einsatz, habe es von meinem Vorgänger übernommen. Nachdem ich heute Anpassungen vornehmen wollte, habe ich durch Trial& Error herausgefunden, dass die Strings im Bereich

    objSignatureEntries.Add “AD Signature”, objSelection
    objSignatureObject.NewMessageSignature = “AD Signature”
    objSignatureObject.ReplyMessageSignature = “AD Signature”

    jeweils maximal 32 Zeichen lang sein können. Lässt sich das irgendwie umgehen, so dass hier längere Zeichenketten angegeben werden können?

    • Hallo,
      Tut mir leid, es wurde nie in Betracht gezogen, Signaturnamen mit mehr als 32 Zeichen zu verwenden, daher war diese Einschränkung nicht einmal bekannt. Wenn die Zeichenfolgenlänge begrenzt ist, müssen Sie leider die Benennung optimieren, um unter dieser Zahl zu bleiben. Basiert die Zeichenfolge auf dem Benutzernamen? Können Sie ein Beispiel geben?
      Grüße,
      Tomek

  2. Hallo,
    wie kann das Skript auf LDAPS Port 636 angepasst werden?
    Die Abfragen sind bald nicht mehr über LDAP 389 möglich. Wir stellen bald auf die Verschlüsselung um.

    Danke!

    Grüße Marc

  3. Hallo,
    bei mir wird leider nichts in die Signatur geschrieben.
    Was kann falsch sein?Habe auch schon oben wie beschrieben die Zeile geändert.
    Liebe Grüße
    Hansolo

    • Hallo Jörg,

      ich habe das Skript mit dem unten angegebenen Fragment ergänzt. Das neue Fragment befindet sich am Anfang des Skripts. Versuche mal bitte jetzt.

      If objUser Is Empty Then _
      MsgBox "No connection with LDAP information.", _
      vbCritical, "Error": Exit Sub

      Grüße,
      Pawel

  4. Super Skript,
    klasse.
    muste nur
    Set objSysInfo = CreateObject(“ADInformation”) in
    Set objSysInfo = CreateObject(“ADSystemInfo”) ändern
    hab es am laufen :-) Vielen Dank für die ausfühliche Erklärung :-)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Verantwortlicher für Ihre personenbezogenen Daten ist CodeTwo sp. z o.o. sp. k.
Weitere Informationen finden Sie in unserer Datenschutzerklärung.