Outlook E-Mail Signatur unter Windows automatisieren

Die Automatisierung von E-Mail Signaturen stellt insbesondere für kleinere und mittelständische Unternehmen eine Herausforderung dar. Häufig entscheiden sich diese Firmen, Signaturen manuell zu verwalten, was bei der Einrichtung neuer Benutzer oft zu Fehlern führt oder dazu, dass die Signatur komplett vergessen wird. Die Suche nach einer Lösung zur einfachen Automatisierung führt schnell zur Erkenntnis, dass es zwar viele Tools gibt, diese aber in der Regel kostenpflichtig sind – und das oftmals jährlich. In solchen Fällen kann es sich lohnen, einige Stunden zu investieren, um ein eigenes PowerShell-Skript zu entwickeln. Einen Ansatz für ein solches Skript möchte ich dir heute zeigen.

Der aus meiner Sicht einfachste Weg zum Ziel ist ein Anmeldeskript welches via Gruppenrichtlinien verteilt werden kann und die Signatur bei jedem Start des Computers von einem zentralen Netzlaufwerk in das Outlook Verzeichnis kopiert. Dies ist vor allem Sinnvoll wenn sich die Signaturen ab und an ändert, wie beispielsweise eine besondere Signatur zu Weihnachten, oder einen Positionswechsel des Mitarbeiters. Somit benötigen wir zuallererst ein Skript welches die Signaturen für jeden Mitarbeiter erstellt und auf einem zentralen Netzlaufwerk ablegt.

# Importiert das Active Directory-Modul, um auf AD-Objekte zugreifen zu können.
Import-Module ActiveDirectory

# Ruft Details aller Benutzer aus dem Active Directory ab, einschließlich Vorname, Nachname und Titel.
$users = Get-ADUser -Filter * -Properties GivenName, Surname, Title

# Definiert die URL des Unternehmenslogos, die in der E-Mail-Signatur verwendet wird.
$logoUrl = 'http://beispiel.com/logo.png'

# Gibt den Pfad an, unter dem die erstellten E-Mail-Signaturen gespeichert werden.
$signatureDirectory = "<Dein-Pfad>"

# Durchläuft jeden Benutzer im Active Directory.
ForEach ($user in $users) {
    # Extrahiert Vorname, Nachname und den vollständigen Namen des Benutzers.
    $firstName = $user.GivenName
    $lastName = $user.Surname
    $fullName = "$firstName $lastName"

    # Extrahiert die Position/Bezeichnung des Benutzers.
    $position = $user.Title

    # Erstellt eine HTML-basierte E-Mail-Signatur mit Benutzerdetails und Unternehmenslogo.
    $emailSignature = @"
    <html>
        <body>
            <p><strong>$fullName</strong></p>
            <p>$position</p>
            <p><img src='$logoUrl' alt='Firmenlogo'></p>
        </body>
    </html>
"@

    # Generiert den Dateinamen für die E-Mail-Signatur basierend auf dem Benutzernamen.
    $fileName = "$signatureDirectory\$($user.SamAccountName).htm"

    # Speichert die E-Mail-Signatur in einer Datei im angegebenen Verzeichnis.
    $emailSignature | Out-File -FilePath $fileName -Encoding utf8
}

# Gibt eine Bestätigung aus, dass die E-Mail-Signaturen für alle Benutzer erstellt wurden.
Write-Output "E-Mail-Signaturen für alle Benutzer erfolgreich erstellt."

Das PowerShell-Skript importiert das Active Directory-Modul, um Benutzerdaten zu extrahieren. Es holt Vorname, Nachname und Titel aller Benutzer aus dem Active Directory und erstellt für jeden Benutzer eine HTML-E-Mail-Signatur, die den vollständigen Namen, die Position des Benutzers und das Unternehmenslogo enthält. Diese Signaturen werden dann unter einem angegebenen Netzwerkpfad als HTML-Dateien gespeichert, wobei der Dateiname dem Benutzernamen entspricht.

Nun muss die Datei nur noch auf den Client an die richtige Stelle kopiert werden, dafür kann dieses Skript verwendet werden:

# Erhalte den Benutzernamen des aktuellen Benutzers
$currentuser = $env:USERNAME

# Definiere den Quellpfad auf dem Netzlaufwerk
# Ersetze "\\Netzlaufwerk\Pfad\" mit dem tatsächlichen Pfad des Netzlaufwerks
$sourcePath = "<Dein-Pfad>" + $currentuser + ".htm"

# Definiere den Zielpfad
$destinationPath = "C:\Users\" + $currentuser + "\AppData\Roaming\Microsoft\Signatures"

# Überprüfe, ob die Quelldatei existiert
if (Test-Path $sourcePath) {
    # Kopiere die Datei
    Copy-Item -Path $sourcePath -Destination $destinationPath
    Write-Host "Datei wurde kopiert."
} else {
    Write-Host "Die Quelldatei wurde nicht gefunden."
}

Dieses Skript kann entweder als Anmeldeskript direkt über Gruppenrichtlinien verwendet werden, oder man bindet es in die üblichen Softwareverteilungen wie Matrix42, Baramundi etc. ein.

🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.