Det meste af de sidste 10 år har jeg professionelt arbejdet med emails og der er efterhånden 20 år siden jeg lave min første Qmail mail installation.
Et af de ekstra opgaver i den forbindelse som jeg er løbet ind i, er brugernes sigantur i Outlook, for det er ikke altid ligemeget, hvordan disse ser ud, og der kan for nogle virksomheder endvidere være Compliance krav til disse.
I sommers så jeg et linkedin opslag fra en Markus Gruber, som havde gang i et projekt der består af en powershell script som hedder Set-Outlooksignatures, det så spændene ud og jeg fik også hentet den ned, men det fejlede bigtime i mit setup, henover efteråret kom der nye features til projektet, herunder understøttelse af Exchange Online via GRAPH, hvilket betød at jeg ville give det et "ekstra skud", hvor manualen blev læst lidt grundigere først.

I første omgang virkede det faktisk ikke, jeg fik selv debuggede mig fremtil at det var nogle LDAP queries som fejlede i mit Lab setup, jeg tillod mig at skrive til Markus, som svarrede og vi begynde at debugge I powershell scriptet.
Hen over de sidste 2 uger har der været sendt logfiler og nye versioner af powershell scriptet frem og tilbage, og nu understøtter hans projekt mit lab setup i forbindelse med version 2.4.0

Hvad er så mit lab setup ?
Jo en række virtuelle server, der dækker rollerne som Onprem AD, en AAD Connect server som også har rollen som Modern Hybrid exchange samt  en onprem Exchange server.
Dvs. min outlook klient forbinder direkte til exchange online og den onprem exchange server benyttes kun til "management" af remote mailboxes, hvilket er et setup, jeg finder en del mindre virksomheder som leve i.

Et par note iforbindelse med opsætning af Set-outlooksignatures imod exchange online

1) Man have graph understøttelse ellers kan den ikke sætte siganaturen i owa, man kan vælge at blot køre den i mod onprem ad og man kan få nogle fine signature i outlook, dog ikke i owa.

Markus har lavet en fin dokumentation af hvordan denne APP register i azuread skal opsættes og det er heldigvis ikke voldsomme rettigheder appen skal have, da alle er af typen Delegated, med der skal forsat gives admin Consent for et par af dem.

Authentication skal opsættes til http://localhost samt Allow Public Client flows, sættes til yes.


Er man søde ved brugerne hopper man efterfølgende over i Enterprise applications og finder appen igen for at under Permissions at giver en Grand admin consent der også, så slipper brugerne for en "browser popup", hvor de skal give adgang.

 

Derefter skal Application (client) ID som findes i app-registeren erstattes i "default graph config.ps1" variablen $GraphClientID
Filen findes i mappen "config"

2) lave outlook signature templates

Næste opgave er at tilrette de templates som kommer med scriptet i mappen Templates\Signatures DOCX  hvilket er mega nemt, for det er word filer som fungere som templates, det er nærmest blot åben og ret, dvs. det vil alm. kontor personale kunne varetage dette efter en kort indkørring i variablerne.


Skal man virkelig lave flotte signature som står skarp på alle pladforme, vil jeg dog anbefale man i stedet ændre set-outlooksignatures til at benytte de "html" templates den også undersøtter og koder det i html, men word versionen er nok til mig for nu.

3) Test

Herefter skal scriptet blot køres i alm. bruger kontext (Set-OutlookSignatures.ps1'-graphonly $true ), og 3,2,1 der er Signatur i Outlook samt exchange online owa, det er da bare nemt :-)
Eksemple på en hurtig tilrette version, hvor langt de fleste felter kommer fra aad data

4) Deployment til brugerne

Personlig ønsker jeg ikke at auto opdater signaturen i mit miljø, for man kan kunne godt ligge den ind i en form for auto kørsel.
Jeg har i stedet pakken den ind via PSAppDeployToolkit, sådan jeg kan sende den ud på alle de lokale computer, og har i forbindelse med deployment lavet en genvej i start menuen til Set-Outlooksignatures.ps1

Powershellen i min Deployment-applications.ps1 består af 4 dele

a) Oprettelse af mappe i File strukture.

$InstallDestinationFolder = $env:programfiles + "\Set-OutlookSignatures"
if(Test-Path $InstallDestinationFolder)
{
## installtions mappe findes
Remove-Item $InstallDestinationFolder -Recurse -Force
new-Item -Path $InstallDestinationFolder -ItemType Directory -Force


}
else
{
New-Item -Path $InstallDestinationFolder -ItemType Directory
}

b) Kopiering af filer fra installations mappen og ind i file strukturen

  Copy-Item -LiteralPath "$($dirfiles)" -Destination $InstallDestinationFolder -Recurse

c )Oprettelse af en genvej til startmenuen. ( eksemple på oprettelse af genvej ligger med i set-outlooksignatures zip filen, ligeledes understøttende grafik.)

 $WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut((Join-Path -Path $([System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::CommonStartMenu)) -ChildPath 'Set Outlook signatures.lnk'))
$Shortcut.WorkingDirectory = $InstallDestinationFolder
$Shortcut.TargetPath = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
$Shortcut.Arguments = "-Command ""& '$($InstallDestinationFolder)\files\Set-OutlookSignatures.ps1' -graphonly $true """
$Shortcut.IconLocation = "$($InstallDestinationFolder)\files\logo\Set-OutlookSignatures Icon.ico"
$Shortcut.Description = 'Set Outlook signatures using Set-OutlookSignatures.ps1'
$Shortcut.WindowStyle = 1 # 1 = undefined, 3 = maximized, 7 = minimized
$Shortcut.Hotkey = ''
$Shortcut.Save()

d )Sync af nye templates ud på klienten, i tilfælde af at det var kommet ekstra til efterfølgende.

## sync ekstra / nye templates ned
$TemplateServer = "\\fileserver"
$TemplateShare="\Set-OutlookSignatures"

if(Test-Path "$($TemplateServer)$($TemplateShare)")
{
$tempatesFolders = Get-ChildItem "$($InstallDestinationFolder)\files\templates"
foreach($templateType in $tempatesFolders)
{
# $templateType.FullName
# "$($TemplateServer)$($TemplateShare)\$templateType"
if("$($TemplateServer)$($TemplateShare)\$templateType")
{
Copy-Item "$($TemplateServer)$($TemplateShare)\$templateType" $templateType.FullName -Recurse
}
}
} 

Efter færdig deployement man man nu søge "set outlook signatures frem i start menu'en på windows og få opbygget en standard signatur udfra sine data i AD

 

 Hvad løser set-outlooksignatures IKKE, jo microsoft mangler forsat at tillader os at deploy en signatur som kan ramme outlook.app på android og Ios enheder, men det skulle jo være på vej.....
Ekstra NOTE: at opdater en allerede sat signatur i OWA, har nogle bugs pt, hvilket mange forventer skyldes microsoft længe ventet Outlook signatur roaming opdatering som skulle få mobil telefonerne med, derfor kan owa sigantur opdateringen godt gå i stå, man kan dog omgå problemet ved at manuelt gå ind og fjerne den allerede oprettet signatur, vente 5 miniutter og køre scriptet igen.