Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Orchestrator – Ajouter des images au corps du mail

 

Lors de l’envoi d’un email dans Orchestrator à l’aide de l’activité Send Email, il est possible de choisir entre de choisir entre le format texte brut et le format HTML pour le corps du mail, dans l’onglet Advanced :

clip_image002

Il devient alors tout naturel de vouloir y intégrer des images à l’aide de la balise HTML <img> , afin d’enrichir encore la mise en page.

Il est alors possible d’avoir recours à plusieurs méthodes : la plus classique consiste à stocker ces images à un endroit accessible par tous les destinataires du mail (site web, partage réseau…) ; mais cette technique présente différents inconvénients : les images sont inaccessibles si l’accès à la source n’est pas disponible au moment de la lecture du mail, la plupart des clients mail bloquent leur chargement par défaut…

Une autre solution consiste à intégrer directement ces images dans les pièces jointes, et à les appeler à l’aide d’un Content ID (CID) au lieu d’un lien réseau ou http, à l’aide de la syntaxe suivante : <img src=’’cid:nomdelimage.jpg’’ />

clip_image003

clip_image005

Et c’est tout, les images seront désormais visibles dans le corps du mail. Encore mieux : selon le client mail utilisé, elles n’apparaitront même pas dans les pièces jointes !

Assurez-vous toutefois bien que le serveur Orchestrator soit lui toujours en mesure d’accéder aux images, il les recharge à chaque appel de l’activité Send Email.

Exchange / Powershell : Influence du paramètre DomainController

Introduction

 

Exchange bénéficie d’un grand nombre de cmdlet Powershell très abouties et permettant de configurer et d’administrer l’intégralité d’une infrastructure de messagerie. Aussi, celles-ci sont très utiles dans le cas de scripts de provisionning. J’ai rencontré une erreur lorsque je cherchais à créer et à configurer un grand nombre de boites aux lettres de ressources.

 

Contexte

 

L’environnement dans lequel j’ai découvert ce problème est une forêt mono domaine Active Directory avec une infrastructure Exchange 2010 SP3 dans laquelle il y avait plusieurs contrôleurs de domaine dans le même site Active Directory que la totalité des serveurs de messagerie.

 

Plus globalement, cette erreur pourra être rencontrée dès qu’un serveur Exchange pourra être amené à interroger plus d’un contrôleur de domaine.

 

Erreur rencontrée

 

Dans un script de provisionning de boîtes aux lettres, on cherche à les créer mais aussi à les configurer. Si l’on souhaite configurer une boite aux lettres tout de suite après sa création alors on obtient une erreur similaire à celle ci-dessous (“ObjectNotFoundException”) :

Cela peut se retrouver en exécutant l’exemple suivant :

Une ou plusieurs opérations de modification (de type Set-…) vont échouer avec le message d’erreur cité précédemment.

 

Explication

 

Suite à cette erreur, il est logique de penser que cela est dû à l’interrogation de différents contrôleurs de domaine qui n’ont pas encore répliqué entre eux (Une réplication intra site peut prendre quelques secondes).

 

Aussi, on peut se dire qu’il suffit alors de spécifier le paramètre DomainController pour corriger le problème en l’indiquant sur toutes les commandes et en définissant un contrôleur de domaine unique qui traitera toutes les opérations.

 

Cependant, cela ne corrigera pas le problème. Microsoft en donne l’explication dans les fiches Technet des cmdlets :http://technet.microsoft.com/en-us/library/dd335046.aspx.

 

Le paramètre DomainController ne concerne que le contrôleur de domaine qui va écrire les modifications dans Active Directory. Cependant, un autre contrôleur de domaine  peut être utilisé pour lire l’objet avant d’écrire les changements sur celui spécifié en paramètre.

 

Aussi, pour une cmdlet de type Get-… (lecture), le paramètre DomainController sera bien le contrôleur de domaine sur lequel l’objet sera lu (cela sera utile pour mettre en place l’une des solutions proposées).

 

Solution

 

Pour résoudre ce problème,  il faut donc attendre que la réplication ait eu lieu sur la totalité des contrôleurs de domaine du site Active Directory de l’infrastructure Exchange. Pour cela, nous avons trois solutions.

 

Solution 1 :

 

Il est possible de séparer la création des boîtes aux lettres et leurs configurations. Cette solution oblige donc a réaliser le provisioning en plusieurs phases.

 

Solution 2 :

 

On peut définir un délai entre l’opération de la cmdlet de création et la cmdlet de configuration via un Start-Sleep par exemple. Cependant, cette solution ne garantit pas que les opérations vont toutes se dérouler correctement. Il faudra sans doute que le délai soit important pour que le provisioning ait un taux de réussite élevé et donc augmenter considérablement le temps d’exécution du script.

 

Solution 3 :

 

La dernière solution est une combinaison des deux précédentes puisqu’elle permet de n’avoir qu’une seule phase de provisioning tout en ayant un temps d’exécution relativement rapide.

 

Cette solution consiste à implémenter une boucle de test de l’opération à réaliser sur le même contrôleur de domaine via la cmdlet de lecture (Get-…).

 

Exemple :

Il est possible d’ajouter une courte pause entre chaque test afin de ne pas surcharger le processus sans pour autant trop pénaliser le temps d’exécution du script. Le paramètre ErrorAction permet d’alléger l’affichage car on connait déjà l’erreur que l’on va rencontrer.

Il ne vous reste plus qu’à choisir la solution que vous préférez.

Exchange 2013 CU8 – Le service Microsoft Exchange Search Host Controller ne démarre pas

Contexte

Sur un serveur Exchange 2013 (CU8), le service Microsoft Exchange Search Host Controller ne démarre pas et dans le journal d’évènements l’erreur suivante est présente :

Source : Application Error
Evènement : 1000
Nom de l’application défaillante hostcontrollerservice.exe
 

2015-05-13_183652

Solution

Le problème semble provenir d’une corruption des fichiers du dossier <X:>\Program Files\Microsoft\Exchange Server \V15\Bin\Search\Ceres\HostController\Data.

Il existe un script Exchange qui reconstruit ce dossier. Pour ce faire, renommez l’ancien dossier Data en DataOld.

2015-05-13_183745

Puis lancez les commandes suivantes dans une console PowerShell Exchange :

  • cd X:\Program Files\Microsoft\Exchange Server \V15\Bin\Search\Ceres\Installer
  • .\installconfig.ps1 –action –i –dataFolder X:\Program Files\Microsoft\Exchange Server \V15\Bin\Search\Ceres\HostController\Data
    La commande renvoi un Successfully configured Search Foundation for Exchange.

2015-05-13_183755

Le service a normalement démarré automatiquement.

2015-05-13_183828