Автоматично генериране на подписи в Outlook 2010/2013 с помощта на PowerShell

В тази статия ще покажем как автоматично да създадете потребителски подпис в пощенски клиент на Outlook 2010/2013, използвайки PowerShell въз основа на данни от Active Directory. Благодарение на описаната методология е възможно да се гарантира, че когато за първи път влезете в системата и стартирате Outlook, всеки нов потребител на домейн, използващ един шаблон, автоматично създава подпис с неговата информация за контакт, получена от Active Directory.

Естествено, за да работи правилно такъв скрипт, е необходимо всички потребители в AD да разполагат с актуални данни. В този пример ще използваме следните атрибути на Active Directory в подписа на потребителя:

  • Име на потребителя на руски език (в моя случай тези данни се съхраняват в атрибута Description),
  • позиция (атрибут заглавие)
  • име на компанията (поле на компанията)
  • Пощенски код, град и адрес (PostalCode, City, StreetAddress)
  • телефонен номер (OfficePhone)
  • пощенски адрес (поща)
  • адрес на уебсайта (начална страница)

Трябва да създадем 3 файла с шаблони за подпис за Outlook във формати HTM (HTML), RTF (Богат текст) и TXT (Обикновен текст). Дизайнът, съдържанието и външният вид на шаблоните за подпис в тези файлове трябва да съответстват на изискванията на подписа на корпоративната поща.

Създайте файл signature.htm със следния html код:







искрено


@NAME

    


@DESCRIPTION


@COMPANY




@POSTALCODE, @CITY, @STREETADDRESS


тел. @ ОФИЦЕФОН


@WEBSITE


Имейл: @EMAIL



Съдържание на файла подпис.RTF и подпис.TXT ще бъде така:

искрено,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Тел. @OFFICEPHONE
Имейл: @EMAIL
сайт: @WEBSITE

В каталога C: \Потребители\обществен\Downloads създайте папка OutlookSignature, в които ще се съхраняват шаблони за подпис за Outlook и компютърни подписи на потребители. В директорията C: \ Users \ Public \ Downloads \ OutlookSignature създайте поддиректория Templates, в който трябва да копирате три файла с шаблони за подпис (това може да стане ръчно или с помощта на предпочитания за групови правила (GPP)).

Създайте нов файл outlooksignature.ps1 със следния код на PowerShell (преди всеки блок код ще дам кратко описание)

Определете набор от променливи. Променливата $ User съдържа потребителското име, от което се изпълнява скриптът. В останалите променливи пишем имената и разширенията на файловете и пътищата към тях.

$ User = $ env: UserName
$ FileName = "подпис"
$ FileExtension = "htm", "rtf", "txt"
$ Path = "C: \ Потребители \ Публични \ Изтегляния"
$ PathSignature = "$ Path \ OutlookSignature"
$ PathSignatureTemplates = "$ Path \ OutlookSignature \ Templates"
$ PathSignatureUser = "$ PathSignature \ $ потребител"
$ AppSignatures = $ env: APPDATA + "\ Microsoft \ Подписи"

Изтеглете модула PowerShell за работа с AD. След това, използвайки командлета Get-ADUser, получаваме стойностите на потребителските атрибути, които ни интересуват в Active Directory, и ги запазваме в обекта $ AD_user.

забележка. За да може командлерът Get-ADUser да работи на Windows 7, на компютъра трябва да бъде инсталиран RSAT и компонентът да е активиран  Модул Active Directory за Windows PowerShell (Контролен панел -> Програми и функции -> Включване / изключване на функции на Windows -> Инструменти за отдалечено администриране на сървъра -> Инструменти за администриране на роли -> AD DS и AD LDS Инструменти)

Импорт-модул activedirectory
$ AD_user = Get-ADUser $ User -Properties заглавие, компания, описание, факс, начална страница, поща, OfficePhone, пощенски код, град, StreetAddress

Създайте директория за съхранение на файлове с подписи на потребители и копирайте файловете с шаблони в нея:

Нов елемент-път "$ PathSignature \ $ User" -ItemType Container -Force
foreach ($ Ext в $ FileExtension)

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

След това, използвайки функцията за замяна, заместваме данните в шаблоните с потребителските данни от AD:

foreach ($ Ext в $ FileExtension)

(Получете съдържание "$ PathSignatureUser \ $ FileName. $ Ext") | Foreach-Object
$ _ '
-заменете „@NAME“, $ AD_user.Description “
-заменете "@DESCRIPTION", $ AD_user.title '
-заменете "@COMPANY", $ AD_user.Company "
-заменете "@STREETADDRESS", $ AD_user.StreetAddress "
-заменете "@POSTALCODE", $ AD_user.PostalCode "
-заменете "@CITY", $ AD_user.City "
-заменете "@OFFICEPHONE", $ AD_user.OfficePhone "
-заменете "@EMAIL", $ AD_user.Mail '
-заменете "@WEBSITE", $ AD_user.Homepage "
| Set-Content "$ PathSignatureUser \ $ FileName. $ Ext"

Остава да копирате файловете с шаблони за подпис в директорията, в която Outlook 2010/2013/2016 съхранява подписи % APPDATA% \ Microsoft \ Подписи (C: \ Потребители \ потребителско име \ AppData \ Роуминг \ Microsoft \ Подписи).

foreach ($ Ext в $ FileExtension)

Copy-Item -Force "$ PathSignatureUser \ $ FileName. $ Ext" "$ AppSignatures \ $ User. $ Ext"
write-host "$ PathSignatureUser \ $ FileName. $ Ext"
напишете хост "$ AppSignatures \ $ Потребител. $ Ext"

За да може Outlook да използва създадените файлове с шаблони за подпис при стартиране, трябва

  • Опция за изтриване Първо бягане в клона HKEY_CURRENT_USER \ Софтуер \ Microsoft \ Office \\ Outlook \ Настройка
  • В клона HKEY_CURRENT_USER \ Софтуер \ Microsoft \ Office \\ Common \ MailSettings създайте два низови параметъра с имената NewSignature и ReplySignature, който ще съдържа името на шаблона с подпис (в нашия пример името на шаблона съответства на името на акаунта в AD)

Съответно, за да работите с различни версии на MS Office, трябва да добавите следния код:

# Офис 2010
Ако (Test-Path HKCU: '\ Софтуер \ Microsoft \ Office \ 14.0')
Remove-ItemProperty -Path HKCU: \ Софтуер \ Майкрософт \ Офис \ 14.0 \ Outlook \ Настройка -Име първо първо изпълнение-Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings' -Name 'ReplySignature' -Value $ User -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Софтуер \ Microsoft \ Office \ 14.0 \ Общи \ MailSettings' -Наименование 'NewSignature' -Value $ User -PropertyType 'String' -Force

#Office 2013
Ако (Test-Path HKCU: '\ Софтуер \ Microsoft \ Office \ 15.0')
Remove-ItemProperty -Path HKCU: \ Софтуер \ Microsoft \ Office \ 15.0 \ Outlook \ Настройка -Наименование първото изпълнение -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings' -Name 'ReplySignature' -Value $ User -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Софтуер \ Microsoft \ Office \ 15.0 \ Общи \ MailSettings' -Имено 'NewSignature' -Value $ Потребител -PropertyType 'String' -Force

Остава да зададете този скрипт на PowerShell да се стартира веднъж с помощта на предпочитания за групови правила, когато потребителят влезе в системата. В резултат на това, когато стартира Outlook, той автоматично ще използва генерирания електронен подпис за изпратени писма (първата снимка на статията дава пример за такъв автоматично генериран подпис).

Някои съвети.

  • В случай, че Outlook показва подпис htm с голям (двоен) отстъп между редовете, това е грешка в Outlook. Най-добре е да създадете файл с шаблон за подпис на htm директно в Outlook и да използвате този файл като шаблон (съхранява се в% APPDATA% \ Microsoft \ Подписи)
  • Можете също така да добавите снимка на потребителя от атрибута thumbnailPhoto в Active Directory към подписа. защото Няма лесен начин да добавите изображение към подпис на Outlook; най-лесният начин, както в горния параграф, е да създадете шаблон за подпис с произволно изображение в Outlook и да замените файла с изображението в директорията с шаблони с копието в скрипта PowerShell (изображението се съхранява в директорията % AppData% \ Microsoft \ Подписи \ .файли).
  • В Exchange 2007 и по-нови версии, най-простият текстов подпис, който автоматично се вмъква във всички букви, също може да бъде реализиран с помощта на транспортни правила