Главная > Active Directory > Автоматическое создание подписи Outlook на основе данных из AD

Автоматическое создание подписи Outlook на основе данных из AD

7 апреля 2015

Для автоматизации создания стандартных подписей используя данные из Active Directory в интернете есть немало скриптов, в том числе на PowerShell.

Скрипт на PowerShell мне не понравился по нескольким причинам:
Выполняется заметно дольше чем на VBS.
Необходимо разрешать выполнение не подписанных скриптов на клиентах.
Без напильника не обновляет подпись при изменениях в AD, а по новому генерировать подпись при каждом логоне — тяжеловат.

Поэтому был выбрал простой скрипт на VBS и модифицирован под свои нужды.

Данный скрипт создает две подписи (обычную и короткую) и назначает их соответственно для новых писем и ответов.
Так как в скрипте если кириллические символы файл нужно сохранить в кодировке Unicode.
Сохраняем, например, как StandardSignature.vbs и добавляем в Logon скрипты объекта групповой политики назначенного на пользователей.

On Error Resume Next
 
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
 
strName = objUser.cn
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strstreetAddress = objUser.streetAddress
strhomephone = objUser.homephone
strtelephoneNumber = objUser.telephoneNumber
strfacsimileTelephoneNumber = objUser.facsimileTelephoneNumber
strmobile = objUser.mobile
strEmail = objUser.emailaddress
strwWWHomePage = objUser.wWWHomePage
strLogo = "\\DOMAIN\netlogon\Signatures\"& strCompany & ".png"
 
Set objWord = CreateObject("Word.Application")
 
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Style = "No Spacing"
 
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
 
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB(0,0,255)
 
'Best regards
objSelection.TypeText "С уважением,"
objSelection.TypeText(Chr(11))
 
'Name 
objSelection.TypeText strName
objSelection.TypeText(Chr(11))
objSelection.TypeText(Chr(11))
 
'Title
objSelection.TypeText strTitle
objSelection.TypeText(Chr(11))
 
'Department
objSelection.TypeText strDepartment
objSelection.TypeText(Chr(11))
 
'Company
objSelection.Font.Bold = True
objSelection.TypeText strCompany
objSelection.Font.Bold = False
objSelection.TypeParagraph()
 
'streetAddress
objSelection.TypeText strstreetAddress
objSelection.TypeText(Chr(11))
 
'homephone
objSelection.TypeText "тел:	"
objSelection.TypeText strhomephone
 
'telephoneNumber
objSelection.TypeText " вн. "
objSelection.TypeText strtelephoneNumber
objSelection.TypeText(Chr(11))
 
'facsimileTelephoneNumber
objSelection.TypeText "факс:	"
objSelection.TypeText strfacsimileTelephoneNumber
objSelection.TypeText(Chr(11))
 
'mobile
objSelection.TypeText "моб:	"
objSelection.TypeText strmobile
objSelection.TypeParagraph()
 
'Email
set hyp = objSelection.Hyperlinks.Add(objSelection.Range,"mailto:" & strEmail & " ", , , strEmail)
hyp.Range.Font.Name = "Arial"
hyp.Range.Font.Size = "10"
hyp.Range.Font.Color = RGB(0,0,255)
objSelection.TypeText(Chr(11))
 
'URL
set hyp = objSelection.Hyperlinks.Add(objSelection.Range,strwWWHomePage,,strwWWHomePage, strwWWHomePage)
hyp.Range.Font.Name = "Arial"
hyp.Range.Font.Size = "10"
hyp.Range.Font.Color = RGB(0,0,255)
objSelection.TypeParagraph()
 
'Logo
Set objInlineShape = objSelection.InlineShapes.AddPicture(strLogo)
objInlineShape.AlternativeText = strCompany
Set objLink = objSelection.Hyperlinks.Add(objInlineShape, strwWWHomePage,,,"")
objSelection.ParagraphFormat.SpaceAfter=1
 
Set objSelection = objDoc.Range()
 
objSignatureEntries.Add "Стандартная подпись", objSelection
objSignatureObject.NewMessageSignature = "Стандартная подпись"
 
objDoc.Saved = True
objWord.Quit
 
' Create Short Standard Signature
 
Set objWord = CreateObject("Word.Application")
 
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Style = "No Spacing"
 
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
 
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB(0,0,255)
 
'Best regards
objSelection.TypeText "С уважением,"
objSelection.TypeText(Chr(11))
 
'Name 
objSelection.TypeText strName
objSelection.TypeText(Chr(11))
 
Set objSelection = objDoc.Range()
 
objSignatureEntries.Add "Короткая Стандартная подпись", objSelection
objSignatureObject.ReplyMessageSignature = "Короткая Стандартная подпись"
 
objDoc.Saved = True
objWord.Quit

Так же в архиве модифицированный PowerShell скрипт взятый в галерее Microsoft и шаблон для его. Не пригодилось.

Комментирование отключено.