PI Services

Le blog des collaborateurs de PI Services

Office 2013 - Personnalisation du ruban d’Outlook via GPO

Contexte

Suite au déploiement de Lync Server 2013, certains clients souhaitent améliorer la visibilité du produit au sein d’Outlook en rajoutant une icône dans la page d’accueil Outlook (par défaut pour créer une réunion Lync, il faut aller dans la partie calendrier).

Problématique

Cette personnalisation d’Outlook n’existe pas dans les modèles d’administration / personnalisation  d’Office (http://www.microsoft.com/en-us/download/details.aspx?id=35554). Cependant il est possible de déployer ce paramètre par GPO.

Solution

N.B : Cette solution a été testée sous Outlook 2010 et 2013.

Lors de la personnalisation du ruban d’Outlook ce dernier créer le fichier olkexplorer.officeUI. Ce fichier se trouve à l’emplacement suivant :

  • Sous Windows XP : %Userprofile%\Local Settings\Application Data\Microsoft\Office\
  • Sous Windows 7/8/8.1 :  %userprofile%\AppData\Local\Microsoft\Office\

Il suffit alors de personnaliser le ruban depuis un poste et de récupérer le fichier olkexplorer.officeUI.

Le déploiement du fichier se fait ensuite via un script lancé au démarrage du poste via GPO.

1 ver | find /i "version 5.1." > nul 2 if %errorlevel%==0 (goto xp) else (goto seven) 3 4 :xp 5 copy \\SERVEUR\Partage\Scripts\WinXP\olkexplorer.officeUI "%Userprofile%\Local Settings\Application Data\Microsoft\Office\" 6 goto logxp 7 8 :seven 9 robocopy /s /e \\SERVEUR\Partage\Scripts\Win7\ %Userprofile%\AppData\Local\Microsoft\Office\ 10 goto logseven 11 12 :logxp 13 FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i 14 if exist "%Userprofile%\Local Settings\Application Data\Microsoft\Office\olkexplorer.officeUI" (goto OKXP) else (goto KOXP) 15 16 :OKXP 17 echo %date% -- Custom Office OK >> \\SERVEUR\Partage\LOG\result.%MYVAR%.txt 18 goto end 19 20 :KOXP 21 echo %date% -- Custom Office FAILED >> \\SERVEUR\Partage\LOG\result.%MYVAR%.txt 22 goto end 23 24 :logseven 25 FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i 26 if exist %Userprofile%\AppData\Local\Microsoft\Office\olkexplorer.officeUI (goto OKSEVEN) else (goto KOSEVEN) 27 28 :OKSEVEN 29 echo %date% -- Custom Office OK >> \\SERVEUR\Partage\LOG\result.%MYVAR%.txt 30 goto end 31 32 :KOSEVEN 33 echo %date% -- Custom Office FAILED >> \\SERVEUR\Partage\LOG\result.%MYVAR%.txt 34 goto end 35 36 :end 37 38

Avant :2014-06-18_172950

Après : 2014-06-18_173159

Powershell : Définir la liste d'adresse par défaut d'Outlook

Problème rencontré

Lors d'une migration Exchange inter organisation visant à la consolidation des infrastructure de messagerie des filiales d'une entreprise, il s'est présenté la problématique suivante. Il fallait que les utilisateurs aient accès dans leur client Outlook à une liste d'adresse correspondant à leur filiale. Cette dernière devait être la liste visible par défaut.

Solution proposée

Pour se faire, il est nécessaire de modifier une clé de registre sur les postes clients.
Dans la ruche : "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\", sont listés les profiles du client Outlook. Une ruche est présente dans chacun de ceux-ci : "9207f3e0a3b11019908b08002b2a56c2". Celle-ci contient la clé "01023d06" qui définit la liste d'adresse qui sera affiché par défaut à l'ouverture du carnet d'adresse. Attention la valeur est encodé au format Bytes HEX. Nous verrons comment la définir.

S'agissant d'appliquer une modification du registre à l'ensemble des postes clients d'une filiale, la solution la plus simple était d'implémenter cela dans le login script. Cela sera fait en Powershell. Il est bien entendu aussi possible de réaliser cette opération en VBS.
 
Il est à savoir que la vue par défaut du carnet d'adresse est la "Global Address List". De plus, si une valeur erronée est inscrite dans la clé de registre (ne correspondant à aucune liste d'adresse) alors Outlook repositionnera automatiquement le carnet d'adresse sur la liste d'adresse globale.

Récupération des paramètres

Afin de connaitre la valeur que nous devons positionner sur la clé "01023d06", il faut paramétrer manuellement Outlook afin de récupérer la valeur que l’on devra positionner. Pour cela, on définit la liste d’adresse sur laquelle on souhaite que nos utilisateurs se trouvent par défaut.

3

Ensuite, on peut ouvrir la clé de registre qui nous intéresse et observer sa valeur.

1

Si l'on modifie plusieurs fois cette valeur, on remarque le phénomène suivant. Elle se découpe en 3 parties :
- Une première qui est généré dynamiquement par utilisateur (avant le trait rouge)
- Une seconde qui est fixe qui va nous être utile pour récupérer la partie dynamique (entre le trait rouge et vert).
- Une troisième partie fixe (après le trait vert).

Ces trois éléments ont toujours une longueur fixe.

Il faut ensuite reformater les deux dernières parties sous forme de tableau de bytes. Il suffit devant chaque valeur en byte d’ajouter “0x” et de mettre une virgule entre toutes les bytes (syntaxe d'un tableau en Powershell).
Exemple :

01 00 00 00 00 01 00 00 2F devient 0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x2F. Dans le script cette valeur sera définit par la variable $GALSuffix.

67 75 69 64 3D 38 42 34 39 43 31 36 34 45 44 35 41 36 34 30 39 34 42 30 42 4236 35 43 34 45 38 46 39 42 39 00 devient 0x67,0x75,0x69,0x64,0x3D,0x34,0x38,0x42,0x34,0x39,0x43, 0x31,0x36,0x34,0x45,0x44,0x35,0x41,0x36,0x34,0x30,0x39,0x34,0x42,0x30,0x42,0x42, 0x36,0x35,0x43,0x34,0x45,0x38,0x46,0x39,0x42,0x39,0x00.

Dans le script cette valeur sera définit par la variable $GALDefaultValue.

Script

Ci-dessous, le script commenté, où l'on va appliquer les paramètres que l'on a récupéré précédemment. Ceux-ci seront comparés avec ceux que l'on retrouve dans la clé de registre "11023d05" qui contient une configuration de sauvegarde. Cela permet de récupérer la première partie qui est dynamique.

2

Entre la ligne 37 et 47 on compare un à un les bytes rencontrés dans la clé de registre "11023d05" afin de retrouver l’index ou se trouve le tableau de bytes contenu dans $GALSuffix. Une fois cette valeur obtenue, on sait que la partie dynamique à rechercher est définie dans les 20 bytes précédentes.

Powershell : Modifier l'affichage d'un compte sous Outlook 2010

Introduction

Dans le cadre d'une migration inter-organization Exchange 2003 vers Exchange 2010, il fallait reconfigurer le profil pour que le nom de compte dans Outlook 2010 soit mis à jour avec la nouvelle adresse email (ainsi que le nom des arborescences des emails et de dossiers publics associées).

Blog1blog2

Afin de répondre à cette problématique en impactant le moins d'utilisateurs possibles, la solution proposée réalisait des modifications via un script déployer en GPO (logon script).
Ci-dessous vous trouverez les informations nécessaires à ce paramétrage via Powershell.

Récupération des informations de comptes

Afin d'effectuer ces modifications il faut aller les chercher dans le registre.
Ainsi, la ruche "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\" liste tout les profiles Outlook enregistré (par défaut le premier profil est appelé Outlook) pour l'utilisateur connecté.
Dans les ruches enfantes, si la clé de registre 001f6620 est présente c'est qu'il s'agit d'un compte Outlook. Cette dernière définit le nom du compte.

De plus, toujours dans les ruches sous-jacentes au nom d'un profile, si la clé 0003660a est positionné alors il s'agit d'une arborescence de emails ou de dossiers publics (ce sont celles qui nous intéressent dans le cas d'un changement de nom).
Si elle a la valeur "0x03,0x00,0x00,0x00" c'est qu'elle représente une arborescence de dossiers publics tandis que "0x01,0x00,0x00,0x00" représente la même chose pour des emails.
Le nom de l'arborescence est contenu dans la clé 001f3001.

Avec ces informations nous pouvons donc facilement retrouver le nom d'un compte et le profile associé pour le modifier. Pour modifier les noms des arborescences, nous avons les clés de registres à changer.

Modification du nom de compte

Pour modifier le nom du compte il n'existe actuellement qu'une seule méthode puisque la propriété du accessible via la librairie Interop (permettant d'interagir avec Outlook) n'est accessible qu'en lecture seule. Un module Powershell a été développé pour gérer les comptes Outlook : Outlook Account Manager. Il est disponible à cette adresse : http://psoutlookmanager.codeplex.com/

Il propose un jeu de commandes permettant de récupérer les profiles (Get-Profile), les comptes (Get-MAPIAccount) et de modifier ces derniers (Set-MAPIAccount).

Voici un exemple permettant le modification du nom d'un compte :

On récupère le compte Outlook que l'on souhaite renommer (Il faut spécifier le profil)
$Account = Get-MAPIAccount -ProfileName "Nom du profil" | Where-Object `   {$_.AccountName -eq "Mon compte à modifier"}
On change l'attribut AccountName avec le nouveau nom que l'on souhaite obtenir.
$Account.AccountName = "Nouveau nom"
On enregistre les changements sur le compte que l'on a mis à jour.
Set-MAPIAccount $Account

Il est à noter que le module Outlook Account Manager ne s'exécute qu'avec Powershell 32 bits. On peut donc lancer le script via la commande ci-dessous :
&"$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" $Path
$Path représente ici le chemin du script.

Cette méthode peut être exécuter pendant qu'Outlook est lancé. Le résultat sera visible dès l'exécution du script (sans avoir à redémarrer Outlook).

Modification du nom d'affichage

Pour mettre à jour le nom d'affichage dans l'arborescence Outlook, il existe plusieurs méthodes.

La première, consiste à utiliser les classes Interop Outlook. Cela va lancer un processus Outlook en tâche de fond.
Tout d'abord on invoque une instance d'Outlook
$Outlook = New-Object -comObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")

Permet d'obtenir tous les comptes.
$Accounts = $Namespace.Accounts

Cette méthode présente l'avantage d'obtenir un résultat visible même si Outlook est lancé (sans avoir à le redémarrer). Cependant, l'utilisateur sera prompté pour lui dire qu'un autre processus souhaite accéder à Outlook, et cela nécessitera donc une intervention manuelle. Il peut aussi être concevable de fermer toutes les instances d'Outlook avant d'exécuter ce script, ce qui peut être déroutant pour l'utilisateur.

Voici un exemple de code permettant la dernière proposition :
$OutlookProcesses = Get-Process | Where-Object {$_.Name -like "Outlook"}
ForEach($Outlook in $OutlookProcesses){
    Stop-Process $Outlook.Id
}

A la fin du script on n'oublie pas de fermer le processus ouvert par la création de l'objet COM :
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Outlook)

La seconde méthode consiste à modifier directement la clé de registre. Pour mettre en œuvre cette opération il faut changer la valeur de la clé "001f3001" que l'on a identifier au préalable. Attention, le type de cette clé est un tableau de bytes. Bien qu'il soit possible de donner une chaine de caractère classique (String), tout en impactant pas le fonctionnement d'Outlook, cela va modifier le type. Voici donc un exemple pour créer un tableau de bytes à partir d'une chaine de caractère :

Exemple de résultat à obtenir :
blog4

On encode une String  en tableau de bytes
$enc = [system.Text.Encoding]::UTF8
$mystring = "This is a string"
$data = $enc.GetBytes($mystring)

Chaque caractère est séparé par une valeur en byte équivalente à un zéro. Pour que notre tableau soit correct il faut ajouter ce zéro après chaque caractère.
On crée un tableau modifiable (ArrayList)
$ArrayBytes = New-Object System.Collections.ArrayList
Entre chaque byte on ajoute un zéro.
foreach($d in $data){
    $ArrayBytes.Add($d)
    $ArrayBytes.Add(0)
}

Enfin on peut modifier la valeur de la clé de registre :

Set-ItemProperty "$RegistryPath" -Name 001f3001 -Value $ArrayBytes
$RegistryPath représente le chemin vers la clé de registre.

L'avantage de cette méthode est de n'avoir pas à exécuter de processus Outlook et l'utilisateur ne se rend pas compte du changement (pas de prompt ni de fermetures intempestives d'Outlook). Cependant si Outlook est lancé, le résultat ne sera visible qu'au prochain démarrage de celui-ci.

SharePoint 2010 : Comment être toujours averti des modifications au niveau des bibliothèques de documents ?

 

Introduction

 

Les bibliothèques font partie des composants les plus utilisés dans les plateformes SharePoint, ils sont utilisées pour stocker des documents, des images, des fichiers média et bien d’autres types de contenu.

Avoir le reflexe d’accéder systématiquement aux différentes bibliothèques dont le contenu nous intéresse ou qui peu affecter le déroulement de nos tâches s’avère une tâche peu commode, l’utilisateur a besoin d’être averti et à jour sans que ceci puisse réduire sa productivité et l’obliger à faire le tour de l’ensemble des entrepôts de données au sein e l’entreprise pour voir s’il y a des nouveautés ou non.

SharePoint 2010 et via son intégration aux systèmes de messagerie et particulièrement le client Outlook permet la mise en place d’un certain nombre de mécanismes qui répondent à ce type de besoin.

En effet:

  • Les bibliothèques peuvent alerter les utilisateurs des changements qu’ils subissent en leurs envoyant des messages électroniques,
  • L’utilisateur peut connecter une bibliothèque à son profil Outlook de telle sorte que la bibliothèque devient visible au niveau de son client lourd Outlook et il peut même télécharger les documents qui l’intéresse le plus de telle sorte que ceux ci soient accessible même en mode déconnecté
  • On peut aussi configurer la bibliothèque pour les flux RSS et comme ça depuis n’importe quel lecteur de flux RSS on peut suivre les changements que celle ci subissent

Les alertes

 

L’alerte est un mécanisme qui se base sur la messagerie pour cela il faudra s’assurer que la plateforme SharePoint est bien configurée en ce qui concerne la messagerie sortante.

On peut configurer des alertes :

  • Pour toute modification au niveau de la bibliothèque
  • Si des éléments sont ajoutés
  • Si des éléments sont modifiés
  • Si des éléments sont supprimés
    image
    Les alertes peuvent être filtrées de telle sorte qu’elle ne concernent que les modifications apportés aux documents dont l’utilisateur est propriétaire ou c’est lui qui a modifié le document en dernier et aussi exclure les alertes engendrées lorsque c’est l’utilisateur lui même qui apporte une modification ce qui permet de réduire le nombre de message à recevoir par le créateur de l’alerte.

 

Connecter une bibliothèque à Outlook

 

SharePoint 2010 s’intègre facilement avec la suite Office et particulièrement le client Outlook, en effet on peut connecter une bibliothèque de document à notre client Outlook ce qui nous permettra d’avoir un accès directe à la bibliothèque depuis le client Outlook et même de pouvoir télécharger des documents au niveau e cache Outlook de telle sorte que ceux ci soient disponible même en mode hors connexion.

Pour connecter une bibliothèque à Outlook il suffit de cliquer sur le bouton Se connecter à Outlook au niveau du Ruban de la bibliothèque des documents.      

image

Autoriser le site Web à configurer Outlook ce qui permettra l’ajout d’un conteneur SharePoint Lists  (encadré en vert) au panneau de navigation Outlook, dans ce conteneur vont apparaitre l’ensemble des bibliothèques SharePoint que vous allez connecter à votre profil Outlook.

Au niveau du volet détail et dès que vous sélectionnez un dossier de votre bibliothèque vous allez voir apparaitre son contenu organisé en deux catégories , les documents téléchargés (encadré en rouge) qui sont disponibles même en hors connexion et les documents disponible au niveau du serveur (encadré en bleu)

Avec Outlook on peut même voir l’aperçu du document s’il est téléchargé (encadré en jaune)                 

imageSNAGHTML17d09b8

 

Suivre une bibliothèque via les Flux RSS

 

La troisième possibilité qu’on peut utiliser pour suivre les modifications dans une bibliothèque de documents consiste à utiliser les flux RSS en s’abonnant à la page Flux RSS de la bibliothèque en question, cette fonctionnalité n’est disponible que si l’administrateur du sit à activer les flux RSS au niveau de la collection du site.

Pour s’abonner il suffit de cliquer sur le bouton RSS depuis le Ruban de la bibliothèque.

image

Avec Internet Explorer ou Outlook vous pouvez explorer la page de flux RSS de la bibliothèque.

imageimage 

          

Conclusion

 

Au niveau de ce billet nous avons pu explorer les différentes manières qui nous permettent d’être toujours averti par rapport à l’évolution et les modifications apportés aux documents ou aux bibliothèques de documents au sein d’une plateforme SharePoint, ceci dit on pourra aussi mettre en place d’autres mécanismes plus avancés qui se basent sur les flux de travail et qui peuvent être personnalisés en prenant en considération les métas données des documents et qui font appel à des routines personnalisées.

Symantec Enterprise Vault V9 – Outlook 2010 et le message caché (Outlook 2010 Hidden Message)

Les stratégies d’archivage ou Policies, quand elles sont appliquées à une boite aux lettres, arrivent sous la forme d’un message caché. Pour rappel, ces stratégies contiennent tous les paramètres relatifs à l’archivage de la dite boite aux lettres. Ne pas oublier non plus d’installer les composants Enterprise Vault pour le client Outlook.

Dans les anciennes versions d’Outlook, il suffisait de cliquer sur Point_D_Interrogation_thumb4 et “A propos d’Enterprise Vault” pour obtenir un certain nombre d’informations, y compris pour visualiser ces fameux paramètres. De plus, il était possible de vérifier la date de dernière synchronisation.

Depuis l’arrivée d’Outlook 2010 et son nouveau bandeau, le fameux Point_D_Interrogation_thumb5 a tout simplement disparu !!…ou plutôt….à pris une autre apparence !…

3d-point-d-39-interrogation_thumb1

La preuve en image…

image_thumb3

Désormais, il faut aller le chercher dans un tout autre endroit… en cliquant sur “Fichier”… “Enterprise Vault”… “Additional Support Information”…

image_thumb5

Et voilà…

image

image

Simple non ?…

N'hésitez pas à laisser un commentaire si ce tips vous a été utile ou bien si vous avez des éléments à ajouter !…