Script per impostare una cartella pubblica di tipo contatti come rubrica di Outlook

Le public folders sono una caratteristica di Exchange nata con la prima versione del prodotto. Sono utilizzate per raccogliere informazioni che devono essere condivise tra i vari utenti e posso contenere tipologia di oggetti differenti: contatti, mail, note, appuntamenti, ecc..

Nelle versioni di Exchange precedenti alla 2007 svolgevano anche alcune funzioni di sistema, tra le quali la distribuzione della offline address book e la gestione delle informazioni di free/busy.

Da Exchange 2007 in poi e con client Outlook 2007 o successiva, le public folders non sono più utilizzate per le funzioni di sistema sopra descritte, che per quanto riguarda Exchange 2010, vengono invece svolte dal servizio di Autodiscover, dal Microsoft Exchange System Attendant service e dal Microsoft Exchange File Distribution service.

Le public folders in alcune situazioni sono state utilizzate in modo intensivo, per cui, anche implementando nuove versioni di Exchange, occorre continuare a gestirle, così come è necessario mantenerle nel caso in cui si abbiano come client vesioni di Outlook 2003 o precedenti.

Un frequente utilizzo che si fa delle public folders è la condivisione di contatti, realizzando delle rubriche centralizzate.

Dai client, per poter utilizzare le public folders di tipo contatti come rubriche di Outlook, occorre abilitare un flag, nelle proprietà della public folder:

image

Nel caso di utenti mobili, che necessita di avere disponibile il contenuto delle contact public folders anche quando sono offline, è necessario che ogni utente aggiunga la public folder tra le proprie “preferite”.

Una richiesta che spesso mi viene fatta dai vari amministratori di sistema è la possibilità di centralizzare queste impostazione.

Di seguito riporto due vbscript, che possono essere eseguiti al logon o tramite group policy per attivare le impostazione richieste.

Il primo serve ad impostare una public folder di tipo contatti come rubrica di Outlook, il secondo aggiunge la public folder alle “preferite” ed opzionalmente la imposta come rubrica di Outlook.

 

Abilitazione PF come rubrica Outlook

‘ Abilitazione PF come rubrica Outlook ‘===========================================================================
‘************ In Italiano **********
strFavFolder = "Cartelle pubblicheTutte le cartelle pubblicheRubrica Condivisa"
‘************ In Inglese ***********
‘strFavFolder = "Cartelle pubblicheTutte le cartelle pubblicheRubrica Condivisa"
Set myFavFolder = GetFolder(strFavFolder)
If Not myFavFolder Is Nothing Then
    myFavFolder.ShowAsOutlookAB = True
End If

Set myFolder = Nothing

Public Function GetFolder(strFolderPath)
On Error Resume Next
strFolderPath = Replace(strFolderPath, "/", "")
arrFolders = Split(strFolderPath, "")
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objFolder = objNS.Folders.Item(arrFolders(0))
If Not objFolder Is Nothing Then
    For I = 1 To UBound(arrFolders)
    Set colFolders = objFolder.Folders
    Set objFolder = Nothing
    Set objFolder = colFolders.Item(arrFolders(I))
        If objFolder Is Nothing Then
            Exit For
        End If
    Next
End If
Set GetFolder = objFolder
Set colFolders = Nothing
Set objNS = Nothing
Set objApp = Nothing
End Function

 

Aggiunta PF ai preferiti ed abilitazione rubrica Outlook

‘ Aggiunta PF ai preferiti ed abilitazione rubrica Outlook
‘===========================================================================
‘************ In Inglese ***********
‘strFolder = "Public FoldersAll Public FoldersRubrica Condivisa"
‘************ In Italiano **********
strFolder = "Cartelle pubblicheTutte le cartelle pubblicheRubrica Condivisa"

Call AddFolderToFavorites(strFolder, True)

Sub AddFolderToFavorites(strPath, AddToAddressBook)
Const olContactItem = 2
Set myFolder = GetFolder(strPath)
If Not myFolder Is Nothing Then
    myFolder.AddToPFFavorites
    ‘ if contacts folder,
    ‘ optionally add new Favorite to OAB
    If myFolder.DefaultItemType = olContactItem Then
        If AddToAddressBook = True Then
        strFavFolder = _
        "Cartelle pubblichePreferite" & _
        myFolder.Name

        ‘************ In Inglese ***********
        ‘"Public FoldersFavorites" & _

        ‘************ In Italiano **********
        ‘"Cartelle pubblichePreferite" & _

        Set myFavFolder = GetFolder(strFavFolder)
            If Not myFavFolder Is Nothing Then
                myFavFolder.ShowAsOutlookAB = True
            End If
        End If
    End If
End If
Set myFolder = Nothing
End Sub

Public Function GetFolder(strFolderPath)
On Error Resume Next
strFolderPath = Replace(strFolderPath, "/", "")
arrFolders = Split(strFolderPath, "")
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objFolder = objNS.Folders.Item(arrFolders(0))
If Not objFolder Is Nothing Then
    For I = 1 To UBound(arrFolders)
    Set colFolders = objFolder.Folders
    Set objFolder = Nothing
    Set objFolder = colFolders.Item(arrFolders(I))
        If objFolder Is Nothing Then
            Exit For
        End If
    Next
End If
Set GetFolder = objFolder
Set colFolders = Nothing
Set objNS = Nothing
Set objApp = Nothing
End Function

 

NOTE:

L’unica modifica da apportare allo script è il nome della public folder.

 

Roberto