«

»

Сен 27

Автоподпись в Outlook у пользователей домена

Доставшийся мне в наследство домен имел очень много лишнего и мало чего полезного. Один из не сделанных на мой взгляд БП —  это автоподпись в Outlook у пользователей домена.

Автоподпись в Outlook у пользователей домена
Естественно: две недели согласования картинок, потом текста, шрифтов и длины интервалов, подготовка Active Directory в плане наполнения атрибутами, телефоны, мэйлы, сайты и т.д.
В итоге мы имеем задачу:
1. Схема самой автоподписи, наглядное исполнение.
2. Шрифты для автоподписи.
3. Пять организаций, на основании которых у сотрудников разная подпись.
4. Атрибуты: не у всех сотрудников,например, есть мобильники, следовательно, будем использовать условие «если».

В заключении: формирующееся Автоподпись в Outlook у пользователей домена по атрибутам. 

Остальное по ходу работ.
Нам потребуется: Active Directory с политиками, картинка для каждой организации, атрибут Active Directory и задания для групп пользователей.
Да, самое главное, делать будем для домена на базе Windows server 2003. Так как это сложнее, причина ? Он туповат на понимание условий и атрибутов.

Расскажу про его туповатость, и как это пришлось обходить.
Логично было бы создать группу пользователей на основании наличия атрибута «компания», например: «контора-1», собрать их в группу пользователей «подпись-контора-1» и предоставить только этой группе доступ к политике, в который наша подпись бы назначалась. Но у 2003 нет условия для атрибута «компания», он его не знает для сортировки, но знает атрибут «комната» room.
Значит делаем различия, компания «контора-1» соответствует комнате 1 и т.д.
Автоподпись в Outlook у пользователей домена

Автоподпись в Outlook у пользователей домена

Согласен, это не совсем удобно в плане администрирования, но зато это работает. В случае с доменом на Windows server 2008, можно использовать только атрибут «компания» и не дублировать комнату .

Скрипт автоподписи по атрибутам Active Directory

On Error Resume Next

Set objSysInfo = CreateObject(«ADSystemInfo»)

strUser = objSysInfo.UserName
Set objUser = GetObject(«LDAP://» & strUser)

strZpov = «С уважением,»
strDev = «________________________________________________________________________»
strPostIndex = ObjUser.postalCode
strName = objUser.FullName
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber
strweb = objuser.wWWHomePage
strstreet = objuser.streetAddress
strfax = objuser.facsimileTelephoneNumber
strIntPhone = objuser.mobile
strEmail = objuser.mail
strotdel = objUser.extensionAttribute3
strLogo = «\\путь до вашего рисунка в сети\logo-контора-1.jpg»

Set objWord = CreateObject(«Word.Application»)
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
Set objRange = objDoc.Range()

objDoc.Tables.Add objRange,2,2

Set objTable = objDoc.Tables(1)

objTable.Rows(1).select
objSelection.Cells.Merge
objTable.Cell(2, 1).select
objTable.Cell(2, 1).Width = 70
objSelection.TypeText CHR(11)
objTable.Cell(2, 1).Text = objSelection.InlineShapes.AddPicture(strLogo)
objTable.Cell(2, 2).select
objTable.Cell(2, 2).Width = 400
objselection.font.color = RGB(11, 32, 77)
objSelection.TypeText CHR(11)
»'
objSelection.ParagraphFormat.Space1
objselection.font.color = RGB(11, 32, 77)
objSelection.Font.Name = «Arial Narrow»
objSelection.Font.Size = «11»
objSelection.TypeText strZpov
objSelection.TypeText CHR(11)
objSelection.TypeText strName
objSelection.TypeText CHR(11)
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)
if (strDepartment<>»») then objSelection.TypeText strDepartment
if (strDepartment<>»») then objSelection.TypeText CHR(11)
if (strotdel<>»») then objSelection.TypeText strotdel
if (strotdel<>»») then objSelection.TypeText CHR(11)
objSelection.TypeText strCompany
objSelection.TypeText CHR(11)
objSelection.TypeText «Тел. » & strPhone
if (strintPhone<>»») then objSelection.TypeText CHR(11) & «Моб. » & strintPhone
objSelection.TypeText CHR(11)
objselection.font.color = RGB(0, 0, 255)
objSelection.Hyperlinks.Add objSelection.range, «mailto:» & strEmail, , , strEmail
objSelection.TypeText CHR(11)
objSelection.Hyperlinks.Add objSelection.Range, strWeb, «», «», strWeb
objSelection.TypeText CHR(11)
objselection.font.color = RGB(0, 0, 0)
objSelection.TypeText strPostIndex & strgorod & strstreet
»'
Set objSelection = objDoc.Range()
objSignatureEntries.Add «AD Signature», objSelection
objSignatureObject.NewMessageSignature = «AD Signature»
objSignatureObject.ReplyMessageSignature = «AD Signature»

objDoc.Saved = True
objDoc.Close
objWord.Quit

Разберём, что за что отвечает в данном скрипте.

Блок, который присваивает атрибуты соответствия Active Directory:

On Error Resume Next

Set objSysInfo = CreateObject(«ADSystemInfo»)

strUser = objSysInfo.UserName
Set objUser = GetObject(«LDAP://» & strUser)

strZpov = «С уважением,»
strDev = «____________________________________________________________________»
strPostIndex = ObjUser.postalCode
strName = objUser.FullName
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber
strweb = objuser.wWWHomePage
strstreet = objuser.streetAddress
strfax = objuser.facsimileTelephoneNumber
strIntPhone = objuser.mobile
strEmail = objuser.mail
strotdel = objUser.extensionAttribute3
strLogo = «\\путь до вашего рисунка в сети\logo-контора-1.jpg»

Set objWord = CreateObject(«Word.Application»)
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
Set objRange = objDoc.Range()

objDoc.Tables.Add objRange,2,2

Set objTable = objDoc.Tables(1)

objTable.Rows(1).select
objSelection.Cells.Merge

Блок, создание таблицы, в которой два столбца и одна строка , цвет текста и его размер:

objTable.Cell(2, 1).select
objTable.Cell(2, 1).Width = 70
objSelection.TypeText CHR(11)
objTable.Cell(2, 1).Text = objSelection.InlineShapes.AddPicture(strLogo)
objTable.Cell(2, 2).select
objTable.Cell(2, 2).Width = 400
objselection.font.color = RGB(11, 32, 77)
objSelection.TypeText CHR(11)

Блок, который выводит информацию из блока соответствий:

objSelection.ParagraphFormat.Space1
objselection.font.color = RGB(11, 32, 77)
objSelection.Font.Name = «Arial Narrow»
objSelection.Font.Size = «11»
objSelection.TypeText strZpov
objSelection.TypeText CHR(11)
objSelection.TypeText strName
objSelection.TypeText CHR(11)
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)
if (strDepartment<>»») then objSelection.TypeText strDepartment
if (strDepartment<>»») then objSelection.TypeText CHR(11)
if (strotdel<>»») then objSelection.TypeText strotdel
if (strotdel<>»») then objSelection.TypeText CHR(11)
objSelection.TypeText strCompany
objSelection.TypeText CHR(11)
objSelection.TypeText «Тел. » & strPhone
if (strintPhone<>»») then objSelection.TypeText CHR(11) & «Моб. » & strintPhone
objSelection.TypeText CHR(11)
objselection.font.color = RGB(0, 0, 255)
objSelection.Hyperlinks.Add objSelection.range, «mailto:» & strEmail, , , strEmail
objSelection.TypeText CHR(11)
objSelection.Hyperlinks.Add objSelection.Range, strWeb, «», «», strWeb
objSelection.TypeText CHR(11)
objselection.font.color = RGB(0, 0, 0)
objSelection.TypeText strPostIndex & strgorod & strstreet

Блок с условием, как назвать подпись, когда выводить данную подпись:

Set objSelection = objDoc.Range()
objSignatureEntries.Add «AD Signature», objSelection
objSignatureObject.NewMessageSignature = «AD Signature»
objSignatureObject.ReplyMessageSignature = «AD Signature»

objDoc.Saved = True
objDoc.Close
objWord.Quit

Скрипт готов, сохраняем его как: имя_файла.VBS, осталось сделать их 5 штук. Назвать по-разному и в каждом поменять логотип  — «картинку» конторы.

Далее, создаём новую групповую политику для каждого скрипта и ставим данный скрипт в автозапуск при входе в систему. Получаем 5 групповых политик, каждая для отдельной конторы, со своим путём для рисунка (логотипа).

 

Автоподпись в Outlook у пользователей домена

Сам созданный скрипт вы можете проверит на своём ПК, запуская его перед запуском Outlook.

Если вы добились нужного расположения, цвета шрифта и логотипа, делайте групповые политики.

Отбор по атрибутам Active Directory в группы пользователей,

а уже сами групповые политики по конторам, определим именно для наших групп.

Создаём групп по атрибутам, тут ещё один камень. Если мы создаём группу, а она у нас динамическая, то есть сотрудник может быть переведён из одной конторы в другую? Я сделал две группы. Одна группа outl-контора1, к данной группе привязана групповая политика.

Автоподпись в Outlook у пользователей домена

Вторая группа, podpis контора-1, в неё я добавляю пользователей по атрибуту «комната», каждое утро, по обычному заданию. Что я делаю заданиями каждое утро и для чего? Удаляю ранее созданные группы пользователей: podpis контора1, podpis контора2, podpis контора3, podpis контора4, podpis контора5. Создаю группу пользователей: podpis контора1, podpis контора2, podpis контора3, podpis контора4, podpis контора5.  Добавляю в эти группы пользователей по атрибуту «комната», соответственно, если атрибут 1, то в группу podpis контора1 и т.д. Добавляю группы podpis контора1 в группу outl-контора1, podpis контора2 в группу outl-контора2 и т.д.

Что получается в итоге: группам не надо постоянно присваивать групповые политики, пользователи постоянно обновляются в группах при смене комнаты, работает автоматически. 

Для создания Автоподпись в Outlook у пользователей домена потребуется добавление заданий windows. Так как команды в наших заданиях на уровне работы сервера, их необходимо сохранять в doc кодировке.

Задания для формирования групп пользователей Active Directory .

Задание на удаление групп:

delgroup.bat

dsrm «сп=podpis контора1, OU=mail podpis, OU=users, dc=Domen, dc=local» -noprompt
dsrm «сп=podpis контора2, OU=mail podpis, OU=users, dc=Domen, dc=local» -noprompt
dsrm «сп=podpis контора3, OU=mail podpis, OU=users, dc=Domen, dc=local» -noprompt
dsrm «сп=podpis контора4, OU=mail podpis, OU=users, dc=Domen, dc=local «-noprompt
dsrm» сп=podpis контора5, OU=mail podpis, OU=users, dc=Domen, dc=local «-noprompt

Задание на создание групп:

creatgroup.bat

dsadd group «сп=podpis контора1, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsadd group «сп=podpis контора2, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsadd group «сп=podpis контора3, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsadd group «сп=podpis контора4, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsadd group «сп=podpis контора5, OU=mail podpis, OU=users, dc=Domen, dc=local»

Задание на добавление пользователей по атрибуты «комната»

adduser.bat

dsquery * -filter «(physicalDeliveryOfficeName=1)» | dsmod group «сп=podpis контора1, OU=mail podpis, OU=users, dc=Domen, dc=local» -chmbr
dsquery * -filter «(physicalDeliveryOfficeName=2)» | dsmod group «сп=podpis контора2, OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr
dsquery * -filter «(physicalDeliveryOfficeName=3)» | dsmod group «сп=podpis контора3, OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr
dsquery * -filter «(physicalDeliveryOfficeName=4)» | dsmod group «сп=podpis контора4, OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr
dsquery * -filter «(physicalDeliveryOfficeName=5)» | dsmod group «сп=podpis контора5, OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr

То есть , все пользователи домена, имеющие атрибут «комната» 1, будут добавлены в группу podpis контора1.

Остаётся добавить группы в группы.

addgroup.bat

dsmod group «cn=outl-контора1,OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr «сп=podpis контора1, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsmod group «cn=outl-контора2,OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr «сп=podpis контора2, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsmod group «cn=outl-контора4,OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr «сп=podpis контора3, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsmod group «cn=outl-контора5,OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr «сп=podpis контора4, OU=mail podpis, OU=users, dc=Domen, dc=local»
dsmod group «cn=outl-контора6,OU=mail podpis, OU=users, dc=Domen, dc=local» -addmbr «сп=podpis контора5, OU=mail podpis, OU=users, dc=Domen, dc=local

Автоподпись в Outlook у пользователей домена для разных компаний, в пределах работы контроллера домена под управлением windows server 2003 создать можно, и не так уж и сложно.

Подведём итоги.

Для осуществления данной задачи по добавлению Автоподпись в Outlook у пользователей домена, потребовалось:

Атрибут «комната» , на основании его отобрали пользователей в соответствующие группы, создали скрипты, которые добавляют подпись с разными логотипами, назначили им отдельные групповые политики, сами групповые политики назначили на группы, и в итоге связали группы групповых политик и группы отсортированных нами пользователей.

Нет нерешаемых задач, есть тупое копирование кода.

Сделанная таким способом Автоподпись в Outlook у пользователей домена отлично работает на всех версия Outlook.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *