В тази статия ще покажем как автоматично да създадете потребителски подпис в пощенски клиент на 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 и по-нови версии, най-простият текстов подпис, който автоматично се вмъква във всички букви, също може да бъде реализиран с помощта на транспортни правила