Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

SCOM 2012 : impossible d’ajouter des Knowledge

Si vous essayez de remplir des Knowledge (base de connaissance) dans SCOM 2012, il y a de fortes chances que vous rencontriez le message d’erreur suivant :

clip_image002

Failed to launch Microsoft Word. Please make sure Microsoft Word is installed. Here is the error message :
Could not load file or assembly « Microsoft.Office.Interop.word, Version 11.0.0.0, Culture = Neutral, PublicKeyToken=71e9bce111e9429c or one of its dependencies. The system cannot find the file specified.

Microsoft propose un contournement non officiel en attendant une mise à jour future qui résoudra ce bug.

Il est dans un premier temps nécessaire de s’assurer que les prérequis sont précisément remplis, car cette fonctionnalité y est très sensible :

1. Installer Word 2010 en version x86 uniquement

2. Installer les VSTOR 2005 (Visual Studio 2005 Tools for Office Second Edition Runtime) (éventuellement en complément d’une version ultérieure, mais cette version 2005 SE est impérative !) http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=20479

3. Rebooter la machine sur laquelle Word et les VSTOR sont installés, même si l’installeur de VSTOR n’a rien demandé.

Il est maintenant temps de mettre en place le contournement à proprement parler.

Récupérer le fichier suivant : http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-52-52-89/KnowledgeEditingNewFiles.zip (mis à disposition par l’équipe SCOM sur son blog : http://blogs.technet.com/b/momteam/archive/2012/10/10/how-to-get-knowledge-editing-to-work-in-operations-manager-2012-with-office-2010.aspx ) et le décompresser dans le répertoire X:\Dossier dinstallation\System Center 2012\Operations Manager\Console à la place des fichiers knowledge.dot et Microsoft.EnterpriseManagement.Monitoring.Console.exe.config qui s’y trouvent déjà (vous pouvez renommer les anciens au lieu de les écraser pour conserver une trace des modifications).

Comme le fichier knowledge.dot de remplacement contient des macro et provient d’internet, il est nécessaire de le déverrouiller (clic droit -> propriétés -> unblock):

clip_image004

Il devrait maintenant être possible d’ajouter des knowledge dans SCOM 2012 en utilisant la procédure habituelle.

Utilisation des Windows forms .Net via Powershell sous WinPE 4

Depuis WinPe 4, il est possible d’utiliser des forms issues du .net via Powershell.

Pour cela, il faut rajouter à votre image wim des packages issues de l’adk.

Monter tout d’abord votre image wim

imagex64.exe /mountrw c:\winpe4_x86\media\sources\boot.wim 1 c:\winpe4_x86\mount

clip_image002

clip_image003

Installation du 1er Package: Netfx4

dism /image:c:\winpe4_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\winpe-netfx4.cab"

clip_image005

Installation du 2nd Package: Powershell3

dism /image:c:\winpe4_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\winpe-powershell3.cab"

clip_image007

Une fois ceux ci installé, démonté votre image wim.

imagex64.exe /unmount c:\winpe4_x86\mount /commit

Démarrer maintenant sur votre PE.

clip_image009

Et là, nous allons lancer un exemple de script ps1 faisant appel à une interface graphique apporté par le Framework .NET.

clip_image011

Nous pouvons donc imaginer en remplacement du HTA, une interface faisant appel aux Forms pour l’élaboration d’un Master par exemple.

Client http sous Powershell

A l’image de Wget qui est un client http, nous pouvons faire appel en powershell à un objet qui permettra donc d’effectuer des requêtes depuis des Urls. Pour cela, il faut utiliser un objet particulier : system.net.webclient

Regardons maintenant certaines propriétés qu’il propose :

(new-object system.net.webclient) | gm

clip_image001

Maintenant, imaginons que nous disposons d’une Url nous retournant un résultat formaté en fichier type csv (séparateur : virgule) nous renvoyant des informations que nous désirons récupérés dans nos scripts, il suffit pour cela de télécharger via la méthode DownloadFile les informations dans un fichier. Et ensuite d’importer ce fichier dans une variable.

Exemple:

$client=new-object system.net.webclient

$url="http://AppelUrl.local"

$path="c:\test\DataUrl.txt"

$client.DownloadFile ($url, $path)

$csv=Import-Csv $path -header intitulé,Process

clip_image002

A partir de là, nous pouvons facilement exploiter les données reçues par l’url.