Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Script Powershell–Scom: Surveillance consommation reguliere de fichiers dans un dossier

 

Le script ci-dessous surveille la consommation (création / suppression) régulière de fichiers dans un dossiers en excluant potentiellement des noms de fichiers et des heures de dernieres modification puis remonte l’état a SCOM.

Lien du script plus bas.

##################################################################################################### #SCRIPT DE SUPERVISION DU CHANGEMENT DE CONTENU DU DOSSIER ARRIVEE POUR LAPPLICATION INVENTAIRE #ETAT KO SI DES FICHIERS SONT PRESENT APRES 15 minutes (CES FICHIERS SONT CENSES ETRE RAPIDEMENT CONSOMMES) ##################################################################################################### #NB: LINTERVALLE DE TEMPS DE COMPARAISON EST CELLE DE LINTERVALLE DEXECUTION DU SCRIPT #SONT EXCLUS DANS LES CRITERES DE RECHERCHE LES FICHIERS CREES ENTRE 22:00 ET 00:59 Param( [string]$computerName, [string]$DirPath, [regex]$excludedfiles=« ^(FILETOEXCLUDE)|(FILETOEXCLUDE)$« , [regex]$filename=« ^.*(.*)$« , [regex]$excludetime=« ^(22:).*|(23:).*|(00:).*$«  ) $scriptname=« CheckDirFileConso«  #API Scom $api = newObject ComObject Mom.ScriptAPI #Verification de lexistence dune source ayant le nom du script dans leventlog operation manager pour loguer certains events Function NewEventSource { if(!(TestPath « HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Operations Manager\$scriptname« )) { NewEventLog LogName « Operations Manager«  Source $scriptname } } #Verification de lexistence du dossier $DirPath if (!(testpath Path $DirPath)) { writehost « le dossier $DirPath est introuvable«  NewEventSource WriteEventLog LogName « Operations Manager«  Source $scriptname EntryType Error EventId 1004 Message « le dossier $DirPath est introuvable«  Exit } $Files=GetChildItem Path $DirPath | WhereObject {$_.name match $filename AND $_.name notmatch $excludedfiles AND $_.lastwritetime lt (getdate).AddMinutes(15) AND $_.LastWriteTime.ToLongTimeString() notmatch $excludetime} | SelectObject Property Name ExpandProperty Name If ($Files) { writehost ForegroundColor yellow BackgroundColor black « Les fichiers suivants sont présent depuis 15 minutes dans le dossier $DirPath:«  foreach ($file in $Files) { writehost $file } NewEventSource WriteEventLog LogName « Operations Manager«  Source $scriptname EntryType Warning EventId 1005 Message « Les fichiers suivants sont présent depuis 15 minutes dans le dossier $DirPath: $Files«  $status=« KO«  writehost «  » writehost ForegroundColor yellow BackgroundColor black « ETAT $status«  } Else { writehost ForegroundColor green « Tout les fichiers présents il y a 15 minutes dans le dossier $DirPath ont été consommés«  NewEventSource WriteEventLog LogName « Operations Manager«  Source $scriptname EntryType Information EventId 1000 Message « Tout les fichiers présent il y a 15 minutes dans le dossier $DirPath ont été consommés«  $status=« OK«  writehost «  » writehost ForegroundColor green « ETAT $status«  } #Envoi de létat a SCOM $bag = $API.CreatePropertyBag() If ($status eq « KO« ) { $bag.AddValue(« Status« ,« Warning« ) } Else { $bag.AddValue(« Status« ,« Success« ) } $bag

 

 

Dysfonctionnement sur Microsoft Office suite à la mise à jour de sécurité MS14-082 (Décembre 2014)

 

Suite à la distribution de la mise à jour de sécurité Office MS14-082 le 9 décembre 2014, vous rencontrez un problème avec l’exécution de vos documents Excel contenant des macros et contrôles ActiveX ? Si la réponse est oui, cet article peut vous intéresser.

Comment se matérialise l’incident ?

Selon l’article officiel disponible ici, Microsoft liste plusieurs symptômes permettant d’identifier l’incident. Pour faire simple suite à l’application de la mise à jour, l’incident vous empêche d’exploiter vos fichiers Office contenant des macros et contrôles ActiveX. Dans notre situation, l’activation du contenu actif d’un fichier Excel contenant des macros était devenue tout simplement impossible.

Dans le détail : L’installation de la mise à jour créée une désynchronisation des bibliothèques de types de contrôle mises en cache (Fichiers portant l’extension .exd)

Vous trouverez ci-dessous les références des mises à jour qui génèrent l’incident :

· Security Update for Microsoft Office 2007 suites (KB2596927)

· Security Update for Microsoft Office 2010 (KB2553154)

· Security Update for Microsoft Office 2013 (KB2726958)

Quels sont les produits impactés ?

Les suites Office 2007, 2010 et 2013 peuvent être impactées par l’installation du correctif. En détail :

· Microsoft Excel 2013

· Microsoft Word 2013

· Microsoft PowerPoint 2013

· Microsoft Visio Standard 2013

· Microsoft Visio Professional 2013

· Microsoft Excel 2010

· Microsoft Word 2010

· Microsoft PowerPoint 2010

· Microsoft Visio Professional 2010

· Microsoft Visio Premium 2010

· Microsoft Visio Standard 2010

· Microsoft Office Excel 2007

· Microsoft Office Word 2007

· Microsoft Office PowerPoint 2007

· Microsoft Office Visio Professional 2007

· Microsoft Office Visio Standard 2007

Comment résoudre le problème ?

Vous pouvez appliquer la solution préconisée ci-dessous :

1. Fermer les classeurs Excel

2. Ouvrir l’explorateur Windows

3. Sélectionner le disque C:

4. Saisir dans la barre de recherche la chaîne de caractères suivante : *.exd

5. Lancer la recherche (attendre que la recherche soit terminée)

6. Plusieurs éléments portant l’extension exd vont être trouvés. Sélectionner et supprimer l’ensemble des éléments trouvés

7. Ouvrez de nouveau votre fichier Excel. Le problème devrait disparaître.

Sources d’informations

Si besoin vous trouverez des informations complémentaires sur les liens ci-dessous :

http://stackoverflow.com/questions/27497444/excel-2010-command-button-no-longer-activate-its-click-event

https://social.technet.microsoft.com/Forums/en-US/b8f0af82-0bb8-4799-aa62-1dbcbc5b7742/excel-2010-macros-does-not-work-after-updates-9dec2014?forum=excel

http://blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2014/12/11/forms-controls-stop-working-after-december-2014-updates-.aspx

Orchestrator 2012 – Récupérer la sortie brute d’une activité Run .NET Script

Dans Orchestrator, l’activité Run .NET Script permet d’exécuter des scripts dans différents langages (Powershell, VB .NET, JScript…) ce qui se révèle très utiles dans les nombreux cas où les activités apportées par les différents Integration Pack se révèlent insuffisantes pour effectuer les tâches dont vous avez besoin.

Cependant, il peut vite devenir compliqué de débugger ces scripts puisque l’activité Run .NET Script ne publie pas le résultat brut de leur exécution dans le databus : impossible alors de savoir où le script a échoué!

En revanche, ce que cette activité peut publier à l’aide de sa fonctionnalité Published Data, c’est le contenu de n’importe quelle variable que contient le script exécuté.

Il ne reste donc plus qu’à utiliser ce fonctionnement afin de stocker le résultat d’exécution du script dans une variable et de la publier via les Published Data.

Prenons l’exemple de ce script Powershell, un simple compteur qui ne présente pas d’intérêt autre que de produire une sortie sur plusieurs lignes :

for ($i=0; $i -le 10; $i++) {write-host $i}

image

 

Il suffit de l’encapsuler comme suit pour récupérer cette sortie dans Orchestrator :

$result = Powershell { for ($i=0; $i -le 10; $i++) {write-host $i} }

image

Puis de publier la variable result dans les Published Data :

image

 

La sortie du script est donc désormais publiée dans le databus.

On peut ensuite la récupérer dans un fichier texte à l’aide de l’activité Append Line, dans un évènement avec Send Event Log Message etc. Attention car dans ce second cas, un évènement sera créé pour chaque ligne si le mode Run Behavior > Flatten n’est pas utilisé!

Prenons l’exemple du fichier texte :

image

On voit bien que l’activité Append Line est appelée une fois par ligne contenue dans la variable result car le flatten n’est pas activé :

image

Et le résultat final :

image

Evidemment, cette astuce sera beaucoup plus utile pour des scripts réels!