Automaticky generovat podpisy v aplikaci Outlook 2010/2013 pomocí PowerShell

V tomto článku si ukážeme, jak automaticky vytvořit uživatelský podpis v poštovním klientovi aplikace Outlook 2010/2013 pomocí prostředí PowerShell na základě dat ze služby Active Directory. Díky popsané metodice je možné zajistit, že při prvním přihlášení do systému a spuštění aplikace Outlook vytvoří každý nový uživatel domény pomocí jediné šablony automaticky podpis s kontaktními informacemi získanými ze služby Active Directory.

Aby tento skript fungoval správně, je samozřejmě nutné, aby všichni uživatelé v AD měli aktuální data. V tomto příkladu použijeme v uživatelském podpisu následující atributy služby Active Directory:

  • Jméno uživatele v ruštině (v mém případě jsou tato data uložena v atributu Popis),
  • pozice (atribut názvu)
  • název společnosti (pole společnosti)
  • PSČ, město a adresa (PostalCode, City, StreetAddress)
  • telefonní číslo (OfficePhone)
  • poštovní adresa (Mail)
  • adresa webové stránky (Homepage)

Musíme vytvořit 3 soubory s podpisovými šablonami pro aplikaci Outlook ve formátech htm (HTML), rtf (Rich Text) a txt (Prostý text). Návrh, obsah a vzhled šablon podpisů v těchto souborech musí odpovídat požadavkům podpisu firemní pošty.

Vytvořte soubor signature.htm s následujícím html kódem:







S pozdravem


@NAME

    


@DESCRIPTION


@COMPANY




@POSTALCODE, @CITY, @STREETADDRESS


tel. @ OFFICEPHONE


@WEBSITE


E-mail: @EMAIL



Obsah souboru podpis.rtf a podpis.txt bude takto:

S pozdravem,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Tel @OFFICEPHONE
E-mail: @EMAIL
site: @WEBSITE

V katalogu C: \Uživatelé\Veřejné\Stahování vytvořit složku Podpis aplikace Outlook, ve kterých budou uloženy šablony podpisů pro aplikace Outlook a podpisy uživatelů počítačů. V adresáři C: \ Users \ Public \ Downloads \ OutlookSignature vytvořte podadresář Šablony, do kterého je třeba zkopírovat tři soubory s podpisovými šablonami (to lze provést ručně nebo pomocí předvoleb Zásady skupiny (GPP)).

Vytvořte nový soubor outlooksignature.ps1 s následujícím kódem PowerShell (před každým blokem kódu stručně popíšu)

Definujte sadu proměnných. Proměnná $ User obsahuje uživatelské jméno, ze kterého je skript spuštěn. Ve zbývajících proměnných píšeme názvy a přípony souborů a cesty k nim.

$ User = $ env: UserName
$ FileName = "signature"
$ FileExtension = "htm", "rtf", "txt"
$ Path = "C: \ Users \ Public \ Downloads"
$ PathSignature = "$ Path \ OutlookSignature"
$ PathSignatureTemplates = "$ Path \ OutlookSignature \ Templates"
$ PathSignatureUser = "$ PathSignature \ $ User"
$ AppSignatures = $ env: APPDATA + "\ Microsoft \ Signatures"

Stáhněte si modul PowerShell pro práci s AD. Poté pomocí rutiny Get-ADUser získáme hodnoty uživatelských atributů, které nás zajímají ve službě Active Directory, a uložíme je do objektu $ AD_user..

Poznámka:. Aby bylo možné spustit rutinu Get-ADUser ve Windows 7, musí být na PC nainstalován RSAT a musí být komponenta povolena  Modul Active Directory pro Windows PowerShell (Ovládací panel -> Programy a funkce -> Zapnutí a vypnutí funkcí systému Windows -> Nástroje pro vzdálenou správu serveru -> Nástroje pro správu rolí -> Nástroje AD DS a AD LDS)

Adresář importního modulu
$ AD_user = Get-ADUser $ User -Properties Title, Company, Description, Fax, HomePage, Mail, OfficePhone, PostalCode, City, StreetAddress

Vytvořte adresář pro ukládání souborů uživatelských podpisů a zkopírujte do nich soubory šablon:

New-Item -Path "$ PathSignature \ $ User" -ItemType Container -Force
foreach ($ Ext v $ FileExtension)

Copy-Item -Force "$ PathSignatureTemplates \ $ FileName. $ Ext" "$ PathSignatureUser \ $ FileName. $ Ext"

Poté pomocí funkce nahrazení nahradíme data v šablonách uživatelskými daty z AD:

foreach ($ Ext v $ FileExtension)

(Get-Content "$ PathSignatureUser \ $ FileName. $ Ext") | Foreach-Object
$ _ '
-nahradit „@NAME“, $ AD_user.Description '
-nahradit „@DESCRIPTION“, $ AD_user.title '
-nahradit „@COMPANY“, $ AD_user.Company '
-nahradit „@STREETADDRESS“, $ AD_user.StreetAddress '
-nahradit „@POSTALCODE“, $ AD_user.PostalCode '
-nahradit „@CITY“, $ AD_user.City '
-nahradit „@OFFICEPHONE“, $ AD_user.OfficePhone '
-nahradit „@EMAIL“, $ AD_user.Mail '
-nahradit „@WEBSITE“, $ AD_user.Homepage '
| Set-Content "$ PathSignatureUser \ $ FileName. $ Ext"

Zbývá kopírovat soubory šablon podpisů do adresáře, ve kterém aplikace Outlook 2010/2013/2016 ukládá podpisy % APPDATA% \ Microsoft \ Signatures (C: \ Users \ username \ AppData \ Roaming \ Microsoft \ Signatures).

foreach ($ Ext v $ FileExtension)

Copy-Item -Force "$ PathSignatureUser \ $ FileName. $ Ext" "$ AppSignapers \ $ User. $ Ext"
write-host "$ PathSignatureUser \ $ FileName. $ Ext"
write-host "$ AppSignatures \ $ User. $ Ext"

Aby aplikace Outlook mohla při vytváření používat vytvořené soubory s podpisovými šablonami, potřebujete

  • Možnost smazat První spuštění ve větvi HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Outlook \ Setup
  • Ve větvi HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Common \ MailSettings vytvořte dva parametry řetězce s názvy Podpis a AnswerSignature, který bude obsahovat název šablony s podpisem (v našem příkladu název šablony odpovídá názvu účtu v AD)

Proto, abyste mohli pracovat s různými verzemi MS Office, musíte přidat následující kód:

#Office 2010
If (Test-Path HKCU: '\ Software \ Microsoft \ Office \ 14.0')
Remove-ItemProperty -Path HKCU: \ Software \ Microsoft \ Office \ 14.0 \ Outlook \ Setup --Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings' -Name 'ReplySignature' -Value $ User -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings' -Name 'NewSignature' -Value $ User -PropertyType 'String' -Force

#Office 2013
If (Test-Path HKCU: '\ Software \ Microsoft \ Office \ 15.0')
Remove-ItemProperty -Path HKCU: \ Software \ Microsoft \ Office \ 15.0 \ Outlook \ Setup --Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings' -Name 'ReplySignature' -Value $ User -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings' -Name 'NewSignature' -Value $ User -PropertyType 'String' -Force

Zbývá přiřadit tento skript PowerShell, aby byl spuštěn jednou pomocí předvoleb Zásady skupiny, když se uživatel přihlásí. Výsledkem je, že při spuštění aplikace Outlook automaticky použije vygenerovaný elektronický podpis pro zaslané dopisy (první obrázek článku uvádí příklad takového automaticky vygenerovaného podpisu).

Několik tipů.

  • V případě, že aplikace Outlook zobrazí htm podpis s velkou (dvojitou) odrážkou mezi řádky, jedná se o chybu Outlook. Nejlepší je vytvořit soubor s podpisovou šablonou htm přímo v aplikaci Outlook a použít tento soubor jako šablonu (uloženou v% APPDATA% \ Microsoft \ Podpisy)
  • K podpisu můžete také přidat fotografii uživatele z atributu thumbnailPhoto ve službě Active Directory. Protože Neexistuje žádný snadný způsob, jak přidat obrázek k podpisu aplikace Outlook, nejjednodušší způsob, jako v předchozím odstavci, vytvořit šablonu podpisu s libovolným obrázkem v aplikaci Outlook a ve skriptu PowerShell zkopírováním nahradit soubor obrázku v adresáři šablony (obraz je uložen v adresáři šablony % AppData% \ Microsoft \ Signatures \ .files).
  • V Exchange 2007 a novějších verzích lze nejjednodušší textový podpis, který se automaticky vloží do všech písmen, implementovat pomocí transportních pravidel