PI Services

Le blog des collaborateurs de PI Services

Générer des mails pour une plateforme de tests

L’objectif

Lors de la mise en place d’un POC avec la messagerie, vous pouvez avoir besoin d’injecter quelques mails afin de tester certaines fonctionnalités. Par exemple, pour tester la fonctionnalité d’archivage avec EntrepriseVault de Symantec, il faut avoir des mails sur le serveur pour que l’archivage puisse fonctionner et qu’il soit possible de visualiser le résultat.

Je vous propose ce script, qui va générer des mails de taille différente (grâce à l’objet System.Random de PowerShell) et remplir une boite mail.

Le script ci dessous va envoyer des mails à une seule et même boite aux lettres. Toutefois, toujours grâce à PowerShell et aux cmdlets Exchange, de rajouter une boucle sur tout ou partie des utilisateurs de messagerie de votre maquette.

Le script CreateRandomMail.ps1

# Adresse du serveur mail

$PSEmailServer = "lab-mbx1.lab.lan"

# Adresse mail de la BAL à remplir

$MailTo = "user1@lab.lan"

# Préfixe pour le sujet des mails

$MailSubject = "MailFromScript_"

# Texte de base qui sera dans le corps du mail

$MailBody = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam mauris massa, facilisis id aliquet sit amet, volutpat ac arcu. Proin hendrerit nunc pulvinar tortor iaculis convallis. In ultrices posuere quam, non pellentesque velit interdum id. Nam vel condimentum tortor. Proin ligula urna, ornare eget rhoncus eget, rhoncus a augue. Nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam mauris massa, facilisis id aliquet sit amet, volutpat ac arcu. Proin hendrerit nunc pulvinar tortor iaculis convallis. In ultrices posuere quam, non pellentesque velit interdum id. Nam vel condimentum tortor. Proin ligula urna, ornare eget rhoncus eget, rhoncus a augue. Nulla. "

# Créer l'objet pour générer des nombres

$random = New-Object System.Random

# Boucle pour 2000 mails (à changer suivant votre besoin)

For ($i=0;$i -lt 2000;$i++){

# Génère un nombre entre 1 et 100 (à changer suivant votre besoin)

    $MailNb = $random.Next(1,100)

# Multiplie le texte X fois grâce au nombre généré

    $Result = $MailBody * $MailNb

# Génère l'adresse mail de l'expéditeur

    $MailFrom = "MailByScript_".$MailNb."@lab.lan"

# Envoi le mail

    Send-MailMessage -From $MailFrom -To $MailToSubject $MailSubject$MailNb -Body $Result

}

 

Personnaliser le script

La script tel quel envoi 2000 mails dans la même BAL. Pour changer la quantité, modifiez la ligne :
For ($i=0;$i -lt 2000;$i++){
Remplacez 2000 par le nombre de mail que vous voulez dans chaque BAL.

Si vous avez besoin de générer des mails de grande taille, il faut modifier la ligne :     $MailNb = $random.Next(1,100)
Et changer les valeurs 1,100. 1 étant le nombre minimum de copie du texte de base et 100 le nombre maximum de fois où le texte de base sera copié dans le corps du mail.

Attention à ne pas mettre des valeurs trop grandes ! Plus les valeurs sont hautes, plus le script mettra de temps à s’exécuter.

Utiliser le script

Ouvrez une console PowerShell sur un serveur de la maquette (si vous utilisez une boucle sur tous les utilisateurs avec les cmdlets Exchange, il faut ouvrir la console sur un serveur disposant des outils de gestion Exchange). Dans la console, faites appel au script. Aucun paramètre n’est nécessaire.

Après quelques minutes ou plusieurs heures (suivant la quantité et le nombre de destinataires), vous aurez un peu de volumétrie dans la messagerie pour travailler votre lab !

System Center Advisor : Supervision en ligne

 

System Center Advisor est un nouveau service de supervision proposé par la plate-forme cloud Azure, permettant de visualiser en ligne au travers de dashboards basés sur des composants graphiques Silverlight, l’état de santé des applications ci-dessous:

  • Windows Server 2008, 2008 R2 et 2012

  • Active Directory

  • Hyper-V

  • Windows operating system

  • SQL Server
  • SharePoint 2010 et supérieur
  • Exchange Server 2010 et supérieur
  • Lync Server 2010 et supérieur
    En pratique, les serveurs ci-dessus communique avec une ou plusieurs Gateways SCOM, elles même connecté a la plateforme System Center Advisor dans le cloud Azure.
    Ce service gratuit se configure a travers les étapes suivantes:
image

 

- Récupération en ligne des sources de la Gateway et des agents

- Installation de la Gateway et des agents sur le périmètre de supervision.

- Enregistrement de la Gateway et approbation des agents

- Configuration de Runas accounts (Pour Sharepoint et Lync)

 

L’interface de supervision en ligne permet de visualiser l'état des composants, les alertes générés…a travers plusieurs types de vues.

Active Directory Replication Status Tool : "License has expired"

 

Cet outil permet de surveiller la réplication entre les contrôleurs de domaine sur l’ensemble d’une même forêt.

clip_image002

Pour les personnes ayant installé la version 1.0 Build 2.3.20717.1 (ou antérieur) de cet outil, un message d’erreur va apparaître : « The License has expired. Please download a new version of the Active Directory Replication Status Tool from the Microsoft website ».

clip_image004

Depuis le 08 juin 2013, les versions 2.3.20717.1 ou antérieures sont confrontées à cette erreur. Cela est dû au fichier License.xml que l’on trouve dans le répertoire C:\Program Files (x86)\Microsoft Active Directory Replication Status Tool\Licensing. En ouvrant le fichier, la date d’expiration apparaît :clip_image006

Ce fichier n’est pas modifiable puisqu’il est signé numériquement.

Afin de corriger ce problème, il est obligatoire de télécharger la dernière version de l’outil disponible depuis le 06 avril à l’adresse suivante : http://www.microsoft.com/download/details.aspx?id=30005

La version disponible est la build 2.4.20.717.1.

clip_image008

Elle expirera le 30 Novembre 2013.

clip_image010

Powershell v3.0 : Les Workflows

Introduction

L'une des grandes nouveautés de Powershell 3.0 est l'intégration des Workflows. Pour généraliser ceux-ci représente une série d'action sur lesquels on va pouvoir effectuer des actions pendant l'exécution. Concrètement, grâce à ceux-ci nous pouvons désormais :
- Paralléliser l'exécution d'actions indépendantes les unes des autres. Cela était déjà faisable via les jobs mais la syntaxe des Workflow est orientée pour les traitements lourds.
- Interrompre puis reprendre des tâches.
- Placer des checkpoints permettant de reprendre des traitements à un endroit donné. Par exemple, si le workflow crashe, nous pouvons reprendre son exécution à partir du checkpoint et non dès le début.

Exemple d’utilisation

On peut imaginer toute sorte d'utilisation :
- Réaliser des pings en parallèle sur des ordinateurs (Traitement sur de multiples postes en même temps).
- Renommer un ordinateur puis reprendre l'exécution du workflow une fois le poste redémarré pour qu'il envoi un mail de confirmation à un administrateur (ou qu'il effectue un traitement).
- La création de machines virtuelles en parallèle.  Puis, on réalise un checkpoint, puisqu'elles n'auront plus à être recréées. Enfin on démarre les machines virtuelles en parallèle et on leurs fait rejoindre le domaine de l'entreprise.
- Créer parallèlement de nombreux ordres de déplacement de boîtes aux lettres dans le cas d'une migration Exchange.
- Créer un workflow contenant d'autres workflows tous exécuté en parallèle (Récupération en même temps, des comptes Active Directory désactivés, expiré, et verrouillé).

Tests et syntaxe

Ici, nous verrons comment implémentés les concepts que l'on a énoncé dans nos scripts. Les différents exemples se veulent simples afin de se focaliser sur la syntaxe.

La syntaxe est similaire au fonction. En effet, seul le mot clé diffère. Il s'agit de "workflow". L'appel au workflow se fait de la même façon que les fonctions.

Tout d'abord, nous allons comparer le temps d'exécution d'un workflow qui exécute 2 pauses d'une seconde en parallèle et une fonction qui réalise la même opération les unes à la suite des autres. Aussi au niveau de la syntaxe, on remarque que ce qui est parallélisé se trouve dans un block de code (entre accolades) précédé du mot clé "parallel".

03

Le résultat montre bien la différence entre les 2 modes d'exécution, puisque le workflow se réalise en un peu plus d'une seconde contre 2 pour la fonction.

04

A l'intérieur d'un bloc "parallel", il est possible d'insérer un bloc "sequence" pour être certain que les actions contenu dans celui-ci ne seront pas parallélisées. 

01

Le résultat obtenu permet de constater que les actions en parallèle s'exécute dans un ordre indéterminable (ici, le résultat de la ligne 9 s'affiche avant celui de la ligne 6 par exemple).

02

Il est aussi possible de gérer une boucle "ForEach" au travers de multiples exécution simultanées. Il suffit d'ajouter le paramètre "parallel".

09

Certaines commandes ne peuvent être traitées par le framework Workflow, il faut donc les inscrire dans un bloc "inlinescript". En voici un exemple avec "Get-ChildItem".

05

Pour qu'une variable déclaré dans un workflow soit accessible dans un bloc "inlinescript", il faut le préfixer par le mot clé "using:". Ci ce n'est pas le cas, alors Powershell est incapable de retrouver la valeur.

0607

Il en est de même si l'on souhaite modifier une valeur déclarer en dehors d'un bloc "parallel". Il faudra que celui-ci soit préfixé du mot "workflow:".

08

Enfin, le dernier thème abordé, sera celui de la sauvegarde, de la mise en pause et de la reprise d'un workflow.

Tout d'abord, la commande "Checkpoint-Workflow" permet de sauvegarder l'état d'un workflow. Ainsi, si celui-ci s'arrête à cause d'une erreur notamment, il pourra être repris à l'endroit où il s'est arrêté. Cela peut être intéressant pour éviter de ré exécuter des traitements lourds.

"Suspend Workflow" permet quant à elle de mettre en pause un traitement. Cette commande intègre automatiquement un checkpoint implicite afin de reprendre plus tard le workflow où il s'est arrêté.

Lorsqu'un workflow est suspendu via "Suspend-Workflow" ou une autre commande comme "Restart-Computer", il est possible de reprendre un traitement en cours via 2 méthodes. La première est manuelle.Lorsque l'on exécute le code ci-dessous, un job est créé. Grâce à l'un de ces attributs comme le nom ou l'ID , il est possible de redémarrer le workflow.

11

10

Pour l'exemple ci-dessous la commande à exécuter serait :

Get-Job -Name Job2 | Resume-Job -Wait

Afin de réaliser la même chose de façon automatisée, on crée un nouveau "job trigger". Celui-ci va nous permettre de gérer de l'évènementiel (lancer une tâche automatiquement à un moment donné).

L'exemple ci-dessous montre la création d'un "job trigger" qui lancera une tâche au démarrage. Cette dernière récupère le Workflow en suspend (ici "Myjob"), et le reprend. Contrairement à l'exemple précédent, on remarque qu'il est possible de définir le nom du job que prendre le workflow. En effet, lorsque l'on invoke un workflow, il existe le paramètre "JobName" qui permet de spécifier ce nom. Ce dernier est un paramètre qui existera pour n'importe quel workflow qui sera créé.

12

Utiliser MDT/WDS – Partie 1

Introduction

Windows Deployment Services (WDS) est la solution proposée par Microsoft pour le déploiement de master via réseau. En soit WDS ne s’occupe que de la partie déploiement du master brut, pour aller plus loin, c’est vers MDT qu’il faut se diriger.

Microsoft Deployment Toolkit ajoute à WDS la possibilité de créer des séquences de tâche, l’intérêt de cette fonction est d’ajouter au master déployé par WDS drivers, applications et personnalisations..

Dans ce 1er post nous verrons comment créer une image de capture et capturer une image de Windows à laquelle nous aurons ajouté les dernières mises à jour, nous n’utiliserons donc que WDS.

Le post suivant se concentrera sur MDT et la création de “Task Sequences”.

Prérequis

Pour ce tutoriel nous utiliseront les prérequis suivants :

        1. Les sources de l’OS à préparer,
      1. Un poste physique ou une VM,
        1. Une image de capture que nous créeront,
        2. Un serveur de déploiement sous Windows Server 2012 avec le rôle WDS.

 

Création d’une image de capture

Ajout d’une image basique

Dans le dossier “Boot Images” de la console WDS faire clic-droit puis “Add Boot Image”, une fenêtre apparait et demande le fichier boot.wim disponible dans le fichier sources du DVD d’installation de Windows (E:\sources\boot.wim).

Génération de l’image de capture

Une fois l’image ajoutée il faut en générer une image de capture, et ici, WDS s’occupe encore de tout ! Il suffit de sélectionner l’image tout juste ajoutée avec un clic-droit, puis de sélectionner “Create capture boot Image” comme ceci : 

image_thumb2

Après avoir nommé l’image de capture (nous la nommerons Capture Image) et lui avoir indiqué un emplacement, WDS va générer le fichier .WIM correspondant. 

Ajout de l’image de capture

Tout comme plus haut dans le paragraphe “Ajout d’une image basique” il faut ajouter l’image fraichement générée en indiquant cette fois le chemin donné lors de la génération de celle-ci.

Avec cette image ajoutée, on peut maintenant capturer un OS, c’est à dire en générer un fichier .WIM sérialisé qui nous servira de base lors des futurs déploiements.

Préparation du master

Dans cette partie nous verrons comment préparer le master et comment le sérialiser avec un sysprep.

Installation et intégration des mises à jours

L’avantage d’utiliser une image capturée pour les master et d’y intégrer les éléments communs qu’il serait (bien que possible) long d’ajouter via MDT. Les mises à jour en sont l’exemple parfait, je vous recommande donc de mettre à jour l’OS avant d’en capturer l’image.

On peut aussi penser à d’autres éléments, par exemple il se peut que lors du déploiement du master, le même fichier de données doit être présent sur la machine, dans ce cas il serait également judicieux de l’intégrer avant la capture.

Sysprep

!ATTENTION !

La phase du sysprep est la plus délicate, une fois lancé, l’ordinateur va s’éteindre, et la capture doit immédiatement être prise avant le redémarrage.

Egalement, afin d’économiser en espace lors de la capture du .WIM, penser à bien vérifier qu’il n’y a AUCUN fichier superflu sur la machine.

Aller dans le répertoire suivant :

C:\Windows\System32\sysprep

Puis exécuter l’application sysprep

image_thumb[1]

Cochez la case « Generalize » et sélectionner « Shutdown » dans la droplist « Shutdown Options »

image_thumb[3]

Le sysprep s’exécute puis la machine s’éteint.

Capture

A l’aide de l’outil de l’assistant de capture d’image réalisé dans la partie “Génération de l’image de capture”, la machine sysprepée va maintenant être capturée.

Une fois la machine éteinte il faut :

  • Vérifier que la machine est bien connectée au même réseau que le serveur de déploiement,
  • Démarrer en mode « Network Boot » ou PXE à l’aide de la touche F12,
  • Puis sélectionner l’OS « Capture Image »

image_thumb[5]

L’assistant capture d’image se lance :

image_thumb[7]

Sélectionner le volume à capturer ainsi que le nom de l’image :

image_thumb[9]

Définir l’emplacement (local ou distant) où l’image sera stockée une fois générée :

image_thumb[11]

La capture se lance, une fois celle-ci terminée, l’ordinateur va démarrer, comme celui-ci a été sysprepé, un assistant d’installation va se lancer.

Une fois l’assistant passé, l’image sera disponible à l’emplacement précisé plus tôt.

Utiliser MDT/WDS – Partie 2

Prérequis

  • Avoir réaliser la partie 1 ou, avoir un serveur avec le rôle WDS et un master généralisé,
  • Avoir un serveur avec le rôle MDT.

Intérêt de MDT

L’intérêt de MDT est la gestion pour un OS unique de plusieurs tasks sequences, prenons un exemple, une société a trois type d’utilisateurs tous sur le même OS mais utilisant des applications différentes, des machines différentes (en fonction de la division) et nécessitant chacun une configuration spécifique. Plutôt que de créer trois masters (un pour chaque division), MDT permet en n’utilisant qu’un seul master, de paramétrer plusieurs séquences de tâches spécifiques, évitant à l’administrateur de créer un nouveau master si de nouveaux besoins apparaissent.

Plus encore, synchronisé avec l’AD c’est lors du déploiement que la machine ira automatiquement s’enregistrer sur la bonne OU, avec les administrateurs locaux désignés.

MDT est divisé en plusieurs “Deployment Share” qui peuvent contenir plusieurs OS et plusieurs séquences de tâches.

Liaison entre WDS et MDT

Dans le précèdent poste, nous avons vu que lorsque l’on boot en PXE, WDS ne nous propose que les différentes images de boot. Seulement, une fois notre task sequence prête nous voudrons accéder à celle-ci !

C’est lors de l’import du premier OS que nous allons créer ce qui seras l’interface entre WDS et le Deployment Share de MDT.

Lors de l’ajout d’un OS à un Deployment Share, MDT va générer un ISO nommé ‘LiteTouchPE’, il s’agit d’un « petit Windows » qui va nous permettre de booter et de choisir une task séquence.

Cet ISO est stocké dans :

[DeploymentShare]\Boot\LiteTouchPE_x64/86.iso

Pour accéder au Deployment Share lors d’un démarrage en PXE il va falloir ajouter l’ISO généré dans le dossier ‘Boot Images’ de l’interface WDS.

Import d’une image sysprepé

Après avoir créé un Deployment Share, la première chose à faire est d’importer une image dans le dossier Operating System.

Clique-droit sur ‘Operating Systems’ puis ‘Import Operating System’ :

image

Sélectionner ‘Custom image file’ puis choisir le fichier .WIM créé dans la partie 1, le sysprep ayant déjà été réalisé choisir ‘Setup and Sysprep files are not needed’ :

image

Puis terminer l’assistant d’installation.

Task Sequence

Une fois la task sequence créé, il faut lui indiquer l’OS contenu dans le Deployment Share à utiliser :

image

Et enfin ajouter les applications à installer, par défaut l’étape est déjà présente dans une task sequence tout juste créé, je recommande d’ajouter une étape par application, et de les placer après celle déjà présente (encadré en bleu).

Lorsqu’un changement est fait sur un Deployment Share, il faut actualiser ce dernier :

image

Choisir ‘Optimize the boot image updating process’ puis terminer l’assistant

Applications

Lorsqu’une application est ajoutée, MDT vous demande comment l’installer et ce via la ‘Quiet install command’, par exemple pour Office, c’est la commande  :

setup.exe /config WW\config.xml

image

Vous l’aurez compris, tout dépend de l’application à installer. Pour office (et la plupart des applications Microsoft, on utilise un fichier de config au format XML où toute la configuration y est indiquée.

Pour d’autre applications, comme celles de Symantec, qui n’utilisent pas de fichier de config, il faudra trouver les bonne commande pour l’installation silencieuse, le lien suivant présente les commandes utilisées par les produits Symantec :http://www.symantec.com/business/support/index?page=content&id=TECH83882.

Configuration de MDT

Afin d’augmenter la productivité de MDT, les deux points suivants sont à configurer comme ceci.

Rules

[Default]
DriverSelectionProfile=Nothing
SkipTaskSequence=YES
TaskSequenceID=
OSInstall=YES
SkipAdminPassword=YES
SkipApplications=NO
SkipAppsOnUpgrade=YES
SkipBDDWelcome=YES
SkipBitLocker=YES
SkipCapture=YES
SkipComputerName=NO
SkipComputerBackup=YES
SkipDeploymentType=YES
DeploymentType=NEWCOMPUTER
SkipDomainMembership=YES
SkipFinalSummary=No
SkipLocaleSelection=YES
KeyboardLocale=fr-FR
UserLocale=fr-FR
UILanguage=fr-FR
SkipPackageDisplay=YES
SkipProductKey=YES
SkipSummary=YES
SkipTaskSequence=NO
SkipTimeZone=YES
TimeZone=105
TimeZoneName=Romance Standard Time
SkipUserData=Yes
UserDataLocation=AUTO
JoinDomain=
DomainAdmin=
DomainAdminDomain=
DomainAdminPassword=

Bootstrap.ini

[Settings]
Priority=Default

[Default]
SkipBDDWelcome=YES
KeyboardLocalePE=040c:0000040c
DeployRoot="Chemin du deployment share"
UserID="Utilisateur ayant les droits d'accès au deployment share"
UserDomain="Nom du domaine"
UserPassword="Mot de passe du userID"

Installation de Windows (x64) sur une partition GPT

Depuis l’apparition de l’UEFI (Unified Extensible Firmware Interface) supposé à terme remplacer le BIOS, les disques MBR laissent peu à peu leurs place aux disques GPT qui permettent par disque physique la cohabitation de 128 partitions de 9,4 milliards de To ce qui laisse loin derrière le BIOS et ses 4 partitions de 2,2 To par disque…

Lorsque l’on tente de réinstaller Windows via une clé USB sur une partition de disque en GPT l’erreur suivante apparait :

“Windows cannot be installed on this disk. The selected disk is of the GPT partition style.”

Ce message d’erreur bien peu bavard ne dit rien sur la cause de l’échec, si ce n’est que la partition est de type GPT. L’erreur ici vient en fait de la clé USB, n’étant pas reconnue comme un périphérique compatible UEFI, c’est le BIOS qui prend la relève, et celui-ci voit les partitions GPT uniquement comme étant réservées au données, donc impossible d’y installer d’OS.

Cependant, en modifiant la structure des fichiers d’installation de Windows sur la clé USB, l’installation se déroule comme prévue.

Step 1 – Formater la clé en FAT32

Et oui FAT32 est le format utilisé par l’UEFI, inutile de s’inquiéter pour le moment les fichiers d’installation de Windows 7 et 8 ne dépassent pas les 4Go, de plus le mode de compatibilité permet d’utiliser le NTFS.

Step 2 – Copier les fichiers d’installations à la racine de la clé

 

Step 3 – Récuperer le fichier bootmgfw.efi

Depuis une version x64 de Windows installée sur un système UEFI, récupérer le fichier bootmgfw.efi disponible à cet emplacement : C:\Windows\Boot\EFI\bootmgfw.efi

Step 4 – Modifier l’emplacement du fichier boot

Modifier l’emplacement du fichier boot depuis G:\efi\microsoft vers G:\efi.

 

Step 5 – Renommer et déplacer bootmgfw.efi

Renommer bootmgfw.efi en bootx64.efi et le copier vers G:\efi\boot.

Maintenant que la clé est prête, l’erreur apparue plus tôt n’est plus là, et l’installation de Windows peut continuer normalement.

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.

Erreur d’exécution du rapport “EV FSAReporting Daily Job”

Introduction

Vous êtes dans la configuration suivante ?

  • Enterprise Vault 10.0.3 Anglais sur Windows 2008 R2 FR
  • Serveur SQL Server 2012 Français sur Windows 2008 R2 FR

Vous rencontrez des problèmes d’exécution de job SQL, notamment l’erreur 3621 sur le job « EV FSAReporting Daily Job » ? Voici un extrait de l’historique des jobs SQL :

Date                        24/05/2013 15:18:07

Journal                    Historique des travaux (EV FSAReporting Daily Job VSGFSAReport)

ID de l'étape           1

Serveur                   SRV-SQL

Nom du travail       EV FSAReporting Daily Job VSGFSAReport

Nom de l'étape      Start

Durée                      00:00:00

Gravité SQL            16

ID de message SQL 3621

Message

Exécuté en tant qu''utilisateur : Domain\EVSQLService. La conversion d'un type de données varchar en type de données datetime a créé une valeur hors limites. [SQLSTATE 22007] (erreur 242)  L'instruction a été arrêtée. [SQLSTATE 01000] (erreur 3621).  L'étape a échoué.

 

Solution

L’erreur SQL de conversion de type de données est dû à la langue de l’environnement. Enterprise Vault étant installé en anglais sur un serveur SQL en français, celui ci ne comprend pas les formats (date notamment) et retourne donc cette erreur de conversion.

Dans SQL Management Studio, Sécurité, Connexions, éditez les propriétés de l’utilisateur qui exécute le rapport (EVSQLService dans notre cas), changez la langue par défaut de French en English.

Vérification

Relancez le job « EV FSAReporting Daily Job » et observez le résultat dans l’historique des travaux SQL :

Date                        24/05/2013 15:52:10

Journal                    Historique des travaux (EV FSAReporting Daily Job VSGFSAReport)

ID de l'étape           1

Serveur                   SRV-SQL

Nom du travail       EV FSAReporting Daily Job VSGFSAReport

Nom de l'étape      Start

Durée                      00:00:00

Gravité SQL            0

ID de message SQL 0

Message

Exécuté en tant qu''utilisateur : Domain\EVSQLService. L'étape a réussi.

Les rapports vont pouvoir fonctionner correctement maintenant.