Automatycznie generuj podpisy w programie Outlook 2010/2013 przy użyciu programu PowerShell

W tym artykule pokażemy, jak automatycznie utworzyć podpis użytkownika w kliencie pocztowym programu Outlook 2010/2013 przy użyciu programu PowerShell na podstawie danych z usługi Active Directory. Dzięki opisanej metodologii możliwe jest upewnienie się, że przy pierwszym logowaniu do systemu i uruchomieniu programu Outlook każdy nowy użytkownik domeny korzystający z jednego szablonu automatycznie tworzy podpis z jego danymi kontaktowymi uzyskanymi z Active Directory.

Oczywiście, aby taki skrypt działał poprawnie, wszyscy użytkownicy w AD muszą mieć aktualne dane. W tym przykładzie użyjemy następujących atrybutów Active Directory w sygnaturze użytkownika:

  • Nazwa użytkownika w języku rosyjskim (w moim przypadku dane te są przechowywane w atrybucie Opis),
  • pozycja (atrybut tytułu)
  • nazwa firmy (pole firmy)
  • Kod pocztowy, miasto i adres (kod pocztowy, miasto, ulicaAdres)
  • numer telefonu (OfficePhone)
  • adres korespondencyjny (poczta)
  • adres strony internetowej (strona główna)

Musimy utworzyć 3 pliki z szablonami podpisów dla programu Outlook w formatach htm (HTML), rtf (Rich Text) i txt (Zwykły tekst). Projekt, treść i wygląd szablonów podpisów w tych plikach muszą być zgodne z wymogami podpisu firmowego.

Utwórz plik podpis.htm z następującym kodem HTML:







Pozdrawiam


@NAME

    


@DESCRIPTION


@COMPANY




@POSTALCODE, @CITY, @STREETADDRESS


tel. @ OFFICEPHONE


@WEBSITE


E-mail: @EMAIL



Zawartość pliku podpis.rtf i podpis.txt będzie tak:

Pozdrawiam,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Tel @OFFICEPHONE
E-mail: @EMAIL
strona: @WEBSITE

W katalogu C.: \Użytkownicy\Publiczne\Pliki do pobrania utwórz folder OutlookSignature, w którym będą przechowywane szablony podpisów dla programu Outlook i podpisy użytkowników komputerów. W katalogu C: \ Users \ Public \ Downloads \ OutlookSignature utwórz podkatalog Szablony, do którego należy skopiować trzy pliki z szablonami podpisów (można to zrobić ręcznie lub przy użyciu Preferencji zasad grupy (GPP)).

Utwórz nowy plik outlooksignature.ps1 z następującym kodem PowerShell (przed każdym blokiem kodu podam krótki opis)

Zdefiniuj zestaw zmiennych. Zmienna $ User zawiera nazwę użytkownika, z którego skrypt jest uruchamiany. W pozostałych zmiennych piszemy nazwy i rozszerzenia plików oraz ścieżki do nich.

$ User = $ env: nazwa_użytkownika
$ FileName = "podpis"
$ FileExtension = „htm”, „rtf”, „txt”
$ Path = "C: \ Users \ Public \ Downloads"
$ PathSignature = "$ Path \ OutlookSignature"
$ PathSignatureTemplates = "$ Path \ OutlookSignature \ Templates"
$ PathSignatureUser = "$ PathSignature \ $ Użytkownik"
$ AppSignatures = $ env: APPDATA + "\ Microsoft \ Signatures"

Pobierz moduł PowerShell do pracy z AD. Następnie za pomocą polecenia cmdlet Get-ADUser otrzymujemy wartości atrybutów użytkownika, które są dla nas interesujące w Active Directory i zapisujemy je w obiekcie $ AD_user.

Uwaga. Aby polecenie cmdlet Get-ADUser działało w systemie Windows 7, RSAT musi być zainstalowany na komputerze i włączony składnik  Moduł Active Directory dla Windows PowerShell (Panel sterowania -> Programy i funkcje -> Włączanie / wyłączanie funkcji systemu Windows -> Narzędzia administracji zdalnej serwera -> Narzędzia administracji roli -> Narzędzia AD DS i AD LDS)

Aktywowany katalog modułu importu
$ AD_user = Get-ADUser $ Użytkownik-Właściwości Tytuł, Firma, Opis, Faks, Strona główna, Poczta, OfficePhone, Kod pocztowy, Miasto, UlicaAdres

Utwórz katalog do przechowywania plików sygnatur użytkowników i skopiuj do niego pliki szablonów:

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

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

Następnie za pomocą funkcji replace zastępujemy dane w szablonach danymi użytkownika z AD:

foreach ($ Ext w $ FileExtension)

(Get-Content „$ PathSignatureUser \ $ FileName. $ Ext”) | Foreach-Object
$ _ ”
-zamień „@NAME”, $ AD_user.Description '
-zamień „@DESCRIPTION”, $ AD_user.title ”
-zamień „@COMPANY”, $ AD_user.Company ”
-zamień „@STREETADDRESS”, $ AD_user.StreetAddress ”
-zamień „@POSTALCODE”, $ AD_user.PostalCode ”
-zamień „@CITY”, $ AD_user.City ”
-zamień „@OFFICEPHONE”, $ AD_user.OfficePhone ”
-zamień „@EMAIL”, $ AD_user.Mail ”
-zamień „@WEBSITE”, $ AD_user.Homepage ”
| Zawartość zestawu „$ PathSignatureUser \ $ nazwa_pliku. $ Ext”

Pozostaje skopiować pliki szablonów podpisów do katalogu, w którym Outlook 2010/2013/2016 przechowuje podpisy % APPDATA% \ Microsoft \ Signatures (C: \ Users \ nazwa użytkownika \ AppData \ Roaming \ Microsoft \ Signatures).

foreach ($ Ext w $ FileExtension)

Element kopiowania -Force „$ PathSignatureUser \ $ FileName. $ Ext” „$ AppSignatures \ $ User. $ Ext”
write-host "$ PathSignatureUser \ $ FileName. $ Ext"
write-host "$ AppSignatures \ $ Użytkownik. $ Ext"

Aby program Outlook mógł używać utworzonych plików z szablonami podpisów podczas uruchamiania, potrzebujesz

  • Usuń opcję Pierwszy bieg w gałęzi HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Outlook \ Setup
  • W gałęzi HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Common \ MailSettings utwórz dwa parametry ciągu o nazwach Newsignature i ReplySignature, który będzie zawierał nazwę szablonu z podpisem (w naszym przykładzie nazwa szablonu odpowiada nazwie konta w AD)

W związku z tym, aby pracować z różnymi wersjami MS Office, musisz dodać następujący kod:

# Office 2010
Jeśli (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” -Nazwa „ReplySignature” -Wartość $ Użytkownik -PropertyType „Ciąg” -Force
New-ItemProperty HKCU: „\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings” -Nazwa „NewSignature” -Wartość $ User -PropertyType „String” -Force

# Office 2013
Jeśli (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” -Nazwa „ReplySignature” -Wartość $ Użytkownik -PropertyType „Ciąg” -Force
New-ItemProperty HKCU: „\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings” -Nazwa „NewSignature” -Wartość $ User -PropertyType „String” -Force

Pozostaje przypisać ten skrypt programu PowerShell, który zostanie uruchomiony raz przy użyciu Preferencji zasad grupy, gdy użytkownik się zaloguje. W rezultacie, uruchamiając program Outlook, automatycznie użyje wygenerowanego podpisu elektronicznego do wysłanych listów (pierwsze zdjęcie artykułu podaje przykład takiego automatycznie wygenerowanego podpisu).

Kilka wskazówek.

  • W przypadku, gdy program Outlook wyświetla podpis htm z dużym (podwójnym) wcięciem między wierszami, jest to błąd programu Outlook. Najlepiej jest utworzyć plik z szablonem podpisu htm bezpośrednio w programie Outlook i użyć tego pliku jako szablonu (przechowywanego w% APPDATA% \ Microsoft \ Podpisy)
  • Do podpisu możesz również dodać zdjęcie użytkownika z atrybutu thumbnailPhoto w usłudze Active Directory. Ponieważ Nie ma łatwego sposobu na dodanie obrazu do podpisu programu Outlook, najłatwiejszy sposób, jak w powyższym akapicie, aby utworzyć szablon podpisu z dowolnym obrazem w programie Outlook oraz w skrypcie PowerShell przez skopiowanie, zastąp plik obrazu w katalogu szablonów (obraz jest przechowywany w katalogu % AppData% \ Microsoft \ Signatures \ .files).
  • W programie Exchange 2007 i nowszych najprostszy podpis tekstowy, który jest automatycznie wstawiany do wszystkich liter, można również zaimplementować przy użyciu reguł transportu