Exploiter toutes les données d'un événement dans une tâche planifiée

Si on se limite aux interfaces graphiques de l'Event Viewer et du Task Scheduler il n'est pas possible d'exploiter toutes les données d'un événement dans une tâche planifiée. Le but de cet article est de créer une tâche de basique et de la modifier de manière à pouvoir utiliser toutes les données d'un événement.

Pour commencer, créons une tâche basique qui lance un script sur un événement 7036 du "service control manager"

On commence par un clic droit sur l'événement puis "Attach Task To This Event…

clip_image002

Ensuite, on suit l'interface jusqu'au choix de l'action à lancer

Next

clip_image004

Next

clip_image006

Next

clip_image008

En guise de programme, nous choisirons Powershell.exe et en guise d'argument le script que nous allons écrire.

clip_image010

Next

Il est important d'ouvrir les options avancées quand la tâche est créée pour contrôler les options de démarrage:

"Open the Properties dialog for this task when I click Finish"  

clip_image012

Finish

L'interface du Task Scheduler s'ouvre pour proposer d'autres options qui ne sont pas accessibles par l'interface des journaux d'événement. Par exemple:

· Run whether user is logged on or not

· Run with highest privileged(cela dépendra des actions que vous déciderez de mener) 

clip_image014

Puis cliquer sur OK

clip_image016

Vérifions que notre tâche est bien exécutée jusqu'au bout en faisant un simple script qui écrit dans un fichier texte

clip_image018

En démarrant un service, on peut voir que la tâche est démarrée et que le fichier texte a été mis à jour par notre script.

clip_image020

clip_image022

Je vous entends déjà vous exclamer "Voilà qui est impressionnant !!! "

Mouais, bof. Pas très utile quand même.

Essayons de rendre la chose plus intéressante en faisant ce que l'interface graphique ne permet pas.

Pour commencer, exportons la tâche vers un fichier .xml

clip_image024

Parmi toutes les sections disponibles, seules "Triggers" et "Actions" nous intéressent.

clip_image026

Pour pouvoir exploiter au mieux ces sections, il nous faut comprendre un peu mieux la structure d'un événement.

Pour cela, ouvrons l'événement 7036 au format .xml.

clip_image028

Tout ce contenu est utilisable depuis la tâche planifiée. Nous allons essayer d'exploiter différent type de données à titre d'exemple

· param1stocke le nom du service dont l'état a changé : Nous l'enregistrerons dans une variable SvcName

· param2stocke le nouveau statut du service : Nous l'enregistrerons dans une variable SvcStatus

· D'autres types d'informations dans d'autres emplacements nous intéresserons également à titre d'exemple:

o EventRecordID

o SystemTime

Ajoutons ces éléments dans la section Trigger de notre tâche planifiée, et ajoutons les à la liste d'arguments au script powershell dans la section Actions

clip_image030

Note: La syntaxe est un peu barbare et case sensitive.

Il ne nous reste plus qu'à importer notre nouvelle tâche dans le "Task Scheduler" et à adapter le script powershell de façon à exploiter les nouvelles données.

clip_image032

Aux prochains événements 7036, nous aurons de nouvelles lignes dans notre fichier texte.

"Mon Dieu, que c'est beau !"

clip_image034

Plus sérieusement, nous voyons à travers cet exemple trivial qu'il est possible d'exploiter toutes les données d'un événement dans une tâche planifiée pour peu qu'on sorte de l'interface graphique.

Serge Gourraud
55 AA