HowTo: Outlook Signatur mit PowerShell aus Active-Directory erstellen

In diesem HowTo geht es um die Erstellung einer Microsoft Outlook Signatur mittels PowerShell aus dem Active-Directory (AD). Zuerst müssen die erforderlichen Template-Dateien (htm, txt) erstellt werden.

Das Layout der beispielhaften Template-Dateien sollte sich am Corporate Design orientieren, und deshalb angepasst werden. Das HowTo ist sehr einfach gehalten, und man kann es deshalb selbst weiterentwickeln bzw. ausbauen.

Inhalt signatur.htm:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>

<div style="font-family: Calibri; font-size: 11pt; color: DimGray">	
		<strong>Mit freundlichen Grüßen</strong><br><br>
		<strong>@NAME</strong><br>
</div>

<div style="font-family: Calibri; font-size: 10pt; color: DimGray">
		@DESCRIPTION<br>
</div>

<div style="font-family: Calibri; font-size: 10pt; color: SteelBlue">
		<strong>@COMPANY</strong>
</div>

<div style="font-family: Calibri; font-size: 10pt; color: DimGray">	
	@STREETADDRESS, @POSTALCODE @CITY<br>
	<strong>Tel</strong> @OFFICEPHONE, <strong>Fax</strong> @FAX<br>
	<a style="color: SteelBlue" href="mailto:@EMAIL">@EMAIL</a><br>
	<a style="color: SteelBlue" href="http://@WEBSITE">@WEBSITE</a><br>
	</p>
	<br>
	<p></p>
</div>

</body>
</html>

Inhalt signatur.txt:

Mit freundlichen Grüßen

@NAME
@DESCRIPTION
@COMPANY
@STREETADDRESS, @POSTALCODE @CITY
Tel @OFFICEPHONE Fax @FAX
@EMAIL
@WEBSITE

Die Template-Dateien sollten nun im Deployment-Verzeichnis (Beispiel) hinterlegt werden, welche als Variable $PathSignaturTemplates angegeben wird.

Nun kann ein neues PowerShell-Skript (ps1) erstellt werden.

Festlegen der Variablen:

$UserName = $env:USERNAME
$FileName = "signatur"
$FileExtension = "htm", "txt"
$PathSignaturTemplates = "\\example.com\deploy\signaturtemplates"
$PathSignaturUser = "$env:APPDATA\Microsoft\Signatures"

Auslesen der AD-Attribute aus dem AD-User-Objekt und Übergabe in eine Variable:

$Table = Get-ADUser $UserName -Properties City, Company, Description, Fax, HomePage, Mail, OfficePhone, PostalCode, StreetAddress

Ein Auslesen der AD-Attribute ist auch ohne installierte PowerShell-AD-Cmdlet möglich (Name müssen entsprechend angepasst werden):

$Table = (New-Object System.DirectoryServices.DirectorySearcher "sAMAccountName=$UserName").FindOne().Properties

Template-Dateien in Benutzer-Verzeichnis für Signatur-Dateien kopieren:

foreach ($Ext in $FileExtension) {
    Copy-Item -Force "$PathSignaturTemplates\$FileName.$Ext" "$PathSignaturUser\$FileName.$Ext"
}

Mit dem -replace Parameter werden die zuvor ausgelesenen AD-Attribute in den Signatur-Dateien eingefügt bzw. ersetzt:

foreach ($Ext in $FileExtension) {
    (Get-Content -Path "$PathSignaturUser\$FileName.$Ext") |
    ForEach-Object { $_ -replace "@CITY", $Table.City } |
    ForEach-Object { $_ -replace "@COMPANY", $Table.Company } |
    ForEach-Object { $_ -replace "@DESCRIPTION", $Table.Description } |
    ForEach-Object { $_ -replace "@EMAIL", $Table.Mail } |
    ForEach-Object { $_ -replace "@FAX", $Table.Fax } |
    ForEach-Object { $_ -replace "@NAME", $Table.Name } |
    ForEach-Object { $_ -replace "@OFFICEPHONE", $Table.OfficePhone } |
    ForEach-Object { $_ -replace "@POSTALCODE", $Table.PostalCode } |
    ForEach-Object { $_ -replace "@STREETADDRESS", $Table.StreetAddress } |
    ForEach-Object { $_ -replace "@WEBSITE", $Table.Homepage } |
    Set-Content -Force -Path "$PathSignaturUser\$FileName.$Ext"
}

Tipp: Werden eckige Klammern (square brackets) bei -replace verwendet, muss ein Backslash am Anfang gesetzt werden.

Empfehlenswert ist die Ausführung des PowerShell-Skripts bei Anmeldung des Benutzers.

Photo by Nastuh Abootalebi on Unsplash
Icon by Icon8

Was denken Sie über dieses Thema?

Sie können gerne hier Ihre Meinung als Kommentar hinterlassen, wir freuen uns darauf. Bleiben Sie mit uns in Kontakt via RSS, Twitter oder Facebook.

Neue Beiträge

Neue Kommentare

Johannes Sebald Verfasst von: