Script per aggiungere automaticamente una firma ad Outlook su Exchange 2010/2013

Find username

Vorreste creare una firma in Outlook automaticamente acquisendo le informazioni da Active directory?

Si può fare!


Normalmente in Active directory vengono salvate poche informazioni come nome e cognome, ma è possibile salvare molte più informazioni che possono essere utilizzate per creare automaticamente una firma completa senza che l’utente debba inserire alcuna informazione.
Grazie ad uno script vbs si potrà così creare un oggetto ADSystemInfo che raccoglie tutte le informazioni presenti in Active Directory e mostrarle nella firma. Nella figura qui di seguito potrete notare che è possibile estrarre qualsiasi attributo presente nell’utente da includere nella firma.

ADattributes

Nella seguente immagine troverete impostati i principali attributi utili nell’utilizzo della firma:

UserAD

Ecco un esempio già pronto ed il relativo codice:
Signature

On Error Resume Next 
Set objSysInfo = CreateObject("ADSystemInfo") 
strUser = objSysInfo.UserName 
Set objUser = GetObject("LDAP://" & strUser) 
strName = objUser.FullName 

strNome = objUser.Description 
strUfficio = objUser.physicalDeliveryOfficeName
strReparto = objUser.Department
strTitolo = objUser.Title
strSocieta = objUser.company 
strVia = objUser.streetAddress 
strLocalita = objUser.l
strTelefonoFisso = objUser.telephoneNumber 
strFax = objUser.FacsimileTelephoneNumber
strCellulare = objUser.Mobile
strProvincia = objUser.st
strEmail = objUser.mail

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 objShape = objSelection.InLineShapes.AddPicture("\\NOMESERVER\CONDIVISIONE\logofirma.jpg") 

objSelection.TypeParagraph()
'objSelection.TypeText chr(11)
objSelection.Font.Size = "8" 
objSelection.Font.Name = "Verdana" 
objSelection.Font.Bold = true 
objSelection.TypeText strNome   
if not strTitolo="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = true 
	objSelection.TypeText Chr(11) & strTitolo 
end if
if not strUfficio="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = false 
	objSelection.TypeText Chr(11) & strUfficio 
end if
if not strReparto="" then 
	objSelection.Font.Size = "6"  
	objSelection.Font.Bold = false 
	objSelection.Font.Italic = false 
	objSelection.TypeText Chr(11) & strReparto 
end if 

objSelection.TypeParagraph() 


'objSelection.Style = "No Spacing" 
objSelection.Font.Italic = true 
objSelection.Font.Color = RGB(45,129,81)
objSelection.Font.Size = "8"   
objSelection.Font.Name = "Verdana" 
objSelection.Font.Bold = true 
objSelection.TypeText "NOMEAZIENDA" & Chr(11) 
objSelection.Font.Size = "6"  
objSelection.TypeText "INDIRIZZO" & Chr(11)
objSelection.TypeText "CAP LOCALITA (PROV)" & Chr(11)
objSelection.TypeText "Telefono: NUMERODITELEFONO" & Chr(11)
objSelection.TypeText "Fax: NUMERODIFAX"
if not strCellulare="" then objSelection.TypeText Chr(11) & "Mobile: " & strCellulare
objSelection.TypeText Chr(11) & "E-mail: " & strEmail 
objSelection.TypeParagraph() 

Set objSelection = objDoc.Range() 

objSignature = objSignatureEntries.Add("Firma con logo", objSelection) 
objSignatureObject.NewMessageSignature = "Firma con logo" 
objSignatureObject.ReplyMessageSignature = "Firma con logo" 
objDoc.Saved = True 
objWord.Quit 
Annunci

Spedire email da Outlook per conto di un gruppo o di un altro utente con Exchange

SendAs

Come spedire email da Outlook per conto di un gruppo o di un altro utente di Exchange?

Ecco il procedimento…


Per garantire ad un utente di Exchange 2007 di spedire per conto di un gruppo o di un altro utente lanciare il seguente comando dalla Exchange Management shell:

Ad es.
Mario Rossi deve spedire per conto di gruppo.info@acme.com

Add-ADPermission -Identity "Mario Rossi" -User gruppo.info -ExtendedRights Send-as

oppure (ma io preferisco il primo)

Add-AdPermission "Group Name" -user "User Name" -AccessRights extendedright -ExtendedRights "send as"

Per verificare:

Get-ADPermission -Identity "Mario Rossi" -User gruppo.info


IMPORTANTE!!!
Attenzione la Exchange Management Shell deve essere lanciata con il permesso di Amministratore! e spesso l’Archivio informazioni di Exchange (servizio MsExchangeIs) deve essere riavviato dopo l’operazione (restart-service msexchangeis)

Ad esempio se volete creare un gruppo di distribuzione “newsletter” i cui membri possano inviare messaggi con l’indirizzo newsletter@acme.local questi sono i comandi della EMC:

1.
Creare il gruppo di distribuzione newsletter con indirizzo di posta newsletter@acme.local e designare i membri;

2.
Lanciare il comando:

Get-DistributionGroupMember -Identity newsletter | Add-ADPermission -User newsletter -ExtendedRights Send-as

Errore Outlook su ricerca: “impossibile completare l’azione. Riprovare”

RicercaOutlook

Quando lanciate una ricerca da un Outlook collegato ad un server Exchange (oppure fate la ricerca da Outlook web access) vi compare l’errore “impossibile completare l’azione” e non sapete cosa fare?

Riorganizzate gli indici di Exchange!

Se compare in Outlook (legato a Exchange 2007/2010) l’errore

"impossibile completare l'azione. Riprovare"

vuol dire che l’indice del database è corrotto.

Per verificare lo stato lanciare il comando:

[PS]> Get-MailboxDatabaseCopyStatus

Name                        Status   Copy   Replay Last Time   State
                                     Queue  Queue  Inspected   
                                     Length Length Log Time    
--------------------------  ------   ------ ------ ----------  -------
Mailbox Database\SERVER-01  Mounted  0         0               Failed
Archive Database\SERVER-02  Mounted  0         0               Healthy

In questo caso lo stato non dovrebbe essere Healthy ma Failed, quindi bisognerà lanciare lo script .\ResetSearchIndex.ps1 -all presente nella cartella C:\programmi\microsoft\Exchange Server\v14\scripts.

[PS]> cd C:\programmi\microsoft\Exchange Server\v14\scripts
[PS]> .\ResetSearchIndex.ps1 -all

Non appena lanciato lo stato del database passerà a Crawling (se consultato con il comando Get-MailboxDatabaseCopyStatus). Alla fine della reindicizzazione lo stato ripasserà a Healthy.

Riavviare poi i relativi servizi lanciando i comandi:

[PS]> Restart-Service MSexchangeSearch
[PS]> Restart-Service MSexchangeIS

Riprovare con la ricerca.