Dieser Artikel erschien zuerst auf Ollis Blog.
Da es häufiger vorkommt, dass in einem großen Unternehmen BenutzerInnen innerhalb des Unternehmens oder der Standorte umziehen, ändern sich dementsprechend die Benutzerdaten und die Signatur, zu dem sieht jede Signatur irgendwie anders aus.
Mögliche Probleme:
- Anarchie bei der Signaturerstellung (z.B. Telefonnummernformat, Grußformel, usw.), Corporate Identity soll erreicht werden
- Aktualität der Daten, siehe dazu meinen nächsten Blogpost => Wie halte ich die AD-Daten aktuell, bzw. lasse es die machen, die wissen sollten wo sie sitzen -> die BenutzerInnen
Damit man diese Signatur nicht bei jeder Person manuell erstellen muss, gibt es verschiedene Möglichkeiten diese zu verteilen.
Folgende Fakten haben wir:
- Outlook-Signatur liegt im Standard in %APPDATA% => C:\Users\%username%\AppData\Roaming\Microsoft\Signatures)
- Active-Directoy mit aktuellen Daten (dazu komme ich im nächsten Blogpost ;-)) => Größtes Problem
- Signatur soll weiterhin anpassbar sein oder auch nicht => großer, technischer Unterschied!
Folgende Verteilungsmöglichkeiten sind mir dabei in den Sinn gekommen:
1. Verteilung einer fertigen Signatur
Signatur wird per Skript auf dem NETLOGON Laufwerk erzeugt und per Login-Skript verteilt.
Die Zuweisung würde über die Registry erfolgen:
- Zuweisung über den "offiziellen" Weg (KB: 2691977), HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Common\MailSettings
Nachteil: BenutzerInnen können ihre Signatur nicht mehr in Outlook anpassen. - Zuweisung über den inoffiziellen Weg, direkt in das Profil des Benutzers: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000001
("1" bedeutet Kontonummer, im Unternehmen normalerweise die 1)
Vorteil: Benuter können Ihre Signaturen selber setzen, Nachteil: Signaturnamen liegen als Binary Type im Hex Format vor ("00 4D" => "M") und somit etwas komplizierter zu implementieren
Vorteile:klar definierte Signatur, Zuweisung über Login-Skript einfach möglich, da Domänen-Benutzer in HKCU schreiben dürfen
Nachteil: statisch, da aktualisierte Signatur erst verfügbar, wenn der nächste Genierungslauf durch ist
2. Generierung der Signatur über ein VBSkript im Login-Skript.
Die Zuweisung würde hierbei entweder über die Registry Keys oder über die VB Funktionen erfolgen.
Vorteile: lesbarer Code ohne Registry Zugriffe, Generierung der Signatur bei Login
Nachteile: weiteres Skript muss über das Login-Skript aufgerufen werden
Für meinen Anwendungsfall habe ich mich für die zweite Variante entschieden, da diese deutlich einfacher zu warten ist.
Dazu hier der Code für die Signatur-Generierung (Download via Dropbox: https://dl.dropboxusercontent.com/u/9482545/Outlook_signatur.vbs) :
' Objects Set objSysInfo = CreateObject("ADSystemInfo") Set WshShell = CreateObject("WScript.Shell") Set objUser = GetObject("LDAP://" & objSysInfo.UserName) Set objWord = CreateObject("Word.Application") ' Signature stuff strName = objUser.givenName + " " + objUser.sn strDepart = objUser.Department strDesc = objUser.Description strStreet = objUser.StreetAddress strLocation = objUser.l strPostCode = objUser.PostalCode strPhone = objUser.TelephoneNumber strMobile = objUser.Mobile strFax = objUser.FacsimileTelephoneNumber strEmail = objUser.mail strCompany = objUser.Company aQuote = Chr(34) aNewLine = Chr(11) If strCompany = "Dummyhausen" then strCompanyTitle = "Foobar company Dummyhausen" strCompanyWeb = "http://www.specialpage.de" Else strCompanyTitle = "Foobar company" strCompanyWeb = "http://www.foobar.de" End If Set objDoc = objWord.Documents.Add() Set objSelection = objWord.Selection Set objEmailOptions = objWord.EmailOptions Set objSignatureObject = objEmailOptions.EmailSignature Set objSignatureEntries = objSignatureObject.EmailSignatureEntries objSelection.Font.Name = "Arial" objSelection.Font.Size = 10 objSelection.TypeText "Mit freundlichem Gruß" objSelection.TypeText vbCrLf if (strCred) Then objSelection.TypeText strCred & strName Else objSelection.TypeText strName objSelection.TypeText vbCrLf & vbCrLf ' Bold objSelection.Font.Bold = True objSelection.TypeText strCompanyTitle + aNewLine objSelection.TypeText strDepart objSelection.Font.Bold = False ' not bold objSelection.TypeText vbCrLf & vbCrLf if (strCred) Then objSelection.TypeText strCred & strName Else objSelection.TypeText strName objSelection.TypeText aNewLine objSelection.TypeText strDesc objSelection.TypeText vbCrLf objSelection.TypeText strStreet & aNewLine objSelection.TypeText strPostCode & " " & strLocation & aNewLine objSelection.TypeText "Tel: " & strPhone & aNewLine if (strFax) Then objSelection.TypeText "Fax: " & strFax & aNewLine if (strMobile) Then objSelection.TypeText "Mobil: " & strMobile & aNewLine objSelection.TypeText vbCrLf objDoc.Hyperlinks.Add objSelection.Range, "Mailto:" & strEmail, , , strEmail objSelection.TypeText " | " objDoc.Hyperlinks.Add objSelection.Range, strCompanyWeb, , ,strCompanyWeb objSelection.TypeText vbCrLf objSelection.TypeText "________________________________" objSelection.TypeText vbCrLf & vbCrLf objSelection.TypeText "Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet." objSelection.TypeText vbCrLf & vbCrLf objSelection.TypeText "This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden." objSelection.TypeText vbCrLf Set objSelection = objDoc.Range() ' full signature objSignatureEntries.Add "Full Signature", objSelection objSignatureObject.NewMessageSignature = "Full Signature" objDoc.Saved = True ' reply signature objSignatureEntries.Add "Reply Signature", objSelection objSignatureObject.ReplyMessageSignature = "Reply Signature" objDoc.Saved = True ' EOF
Dieses Skript hat keinerlei Ausgaben, sondern verrichtet die Arbeit komplett im Hintergrund, somit werden die BenutzerInnen nicht belästigt, im Beispiel wird die gleiche Signatur für die "Antwort Signatur" genommen, das könnte man noch aufteilen, in dem man eine Kurzsignatur dazu entwirft, mit dem Beispiel sollte man das eigentlich einfach hinbekommen. Es nutzt die Office VBSkript Bibliotheken und liest die eigenen Benutzerdaten aus dem AD.
Nun muss das Skript nur noch in das Login-Skript eingebaut werden, anschließend werden bei allen PC-Anmeldungen die Signaturen neugeschrieben und aktiviert.
Fazit: Ohne großen Aufwand kann die Corporate Identity durchgesetzt werden.
Download-Link: https://dl.dropboxusercontent.com/u/9482545/Outlook_signatur.vbs
http://faq-o-matic.net/?p=5272