quinta-feira, 5 de dezembro de 2019

Assinatura automatica no Outlook via GPO

Assinatura automatica no Outlook via GPO utilizando dados do AD

Necessário criar um script VBS rodando via script de logon na configuração de usuário
segue script

------------------------- assinatura.vbs ------------------

' VBScript source code
' Configuracao para buscar os dados no Active Directory
' Pagina do script base: http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/a591403a-796a-4a45-872d-febe44265e34
' Nome da Consulta no forum:  Script para inserir assinatura
' Referencias para Funções: http://www.pctools.com/guides/scripting/id/25/?act=reference


On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName

Set objUser = GetObject("LDAP://" & strUser)

strName = objUser.FullName
strFirstName = objuser.givenName
'StrLastName = objuser.sn
strTitle = objUser.Title
srtDepartament = objUser.department
'strCompany = objUser.Company
'strStreet = objUser.StreetAddress
'strLocation = objUser.l
'strCountry = objUser.co
'strPostCode = objUser.PostalCode
strPhone = objUser.TelephoneNumber
'strFax = objUser.FacsimileTelephoneNumber
strEmail = objUser.mail
strNomeArq = "Assinatura " & strFirstName

'   Caminho para buscar o logo da empresa

strLogo = "\\SRVAD\netlogon\Assinatura\Logo.png"
strBarra = "\\SRVAD\netlogon\Assinatura\Barra.png"


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

'   Formatacao de fonte e paragrafo
objSelection.Font.Name = "Franklin Gothic Book"
objSelection.Paragraphs.LineSpacingRule = wdLineSpaceSingle
objselection.Paragraphs.SpaceAfter = 1
objRange.Font.Name = "Franklin Gothic Book"
objRange.Font.Size = 10

' Inicio da Assinatura


' Define uma tabela de 1x1

objDoc.Tables.Add objRange, 1, 2

 Set objTable = objDoc.Tables(1)


'Logotipo Empresa
With objTable.Cell(1, 1)
With .Range.Select
objSelection.InlineShapes.AddPicture(strLogo)
objTable.Columns(1).Width = 120
objTable.Columns(2).Width = 440
End With
End With

'Insere nome do funcionario
With objTable.Cell(1, 2)
With .Range.Select
objSelection.Font.Name = "Franklin Gothic Book"
objSelection.Font.Size = "16"
objSelection.Font.Color = RGB(175,0,15)
objSelection.Font.Bold = False
objSelection.TypeText strName & VbCr

'Insere Cargo, email e telefone
Set objSelection = objWord.Selection
objSelection.Font.Bold = False
objSelection.Font.Size = "11"
objSelection.Font.Color = RGB(69,69,69)
objSelection.TypeText strTitle & VbCr
objSelection.TypeText strEmail & VbCr
objSelection.TypeText strPhone & VbCr
objSelection.Font.Size = "5"
objSelection.TypeText VbCr
'Insere barra no final
objSelection.InlineShapes.AddPicture(strBarra)
End With
End With

'Finalizacao e Definicao do nome da assinatura e coloca a mesma como padrao
Set objSelection = objDoc.Range()
objSignatureEntries.Add strNomeArq,  objSelection
objSignatureObject.NewMessageSignature = strNomeArq
objSignatureObject.ReplyMessageSignature = strNomeArq
objDoc.Saved = True
objWord.Quit


Definindo Wallpaper conforme resolução

Na empresa onde trabalho se fez necessário dois papeis diferentes conforme o tipo de monitor, 4:3 ou 16:9, para isso foi necessário colocar o script abaixo no em uma GPO de logon para que mude o papel de parede conforme o tipo de tela

-------------------------------------
echo off
setLocal EnableDelayedExpansion

if %computername% == Servidor GOTO server

wmic path Win32_VideoController get CurrentHorizontalResolution| FIND /I "1920">Nul && (GOTO wide)
wmic path Win32_VideoController get CurrentHorizontalResolution| FIND /I "1440">Nul && (GOTO wide)
wmic path Win32_VideoController get CurrentHorizontalResolution| FIND /I "1366">Nul && (GOTO wide)
wmic path Win32_VideoController get CurrentHorizontalResolution| FIND /I "1360">Nul && (GOTO wide)
wmic path Win32_VideoController get CurrentHorizontalResolution| FIND /I "1600">Nul && (GOTO wide)

GOTO normal

:wide
copy /y \\servidor\sysvol\scripts\Wallpapers\wide\* %userprofile%\Pictures\
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
GOTO fim

:normal
copy /y \\servidor\sysvol\scripts\Wallpapers\normal\* %userprofile%\Pictures\
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
GOTO fim

:server
del /q c:\temp\wallpaper.bmp
del /q c:\temp\wallpaper.jpg

:fim
-------------------------------

Após o script é necessário definir na GPO que o papel de parede é o %userprofile%\Pictures\wallpaper.jpg

Como funciona
Ele verifica a resolução de tela e conforme a resolução copia um arquivo para o %userprofile%\Pictures\ , e a GPO usa esta imagem como padrão