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… "
Ensuite, on suit l'interface jusqu'au choix de l'action à lancer
Next
Next
Next
En guise de programme, nous choisirons Powershell.exe et en guise d'argument le script que nous allons écrire.
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"
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)
Puis cliquer sur OK
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
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.
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
Parmi toutes les sections disponibles, seules "Triggers" et "Actions" nous intéressent.
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.
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
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.
Aux prochains événements 7036, nous aurons de nouvelles lignes dans notre fichier texte.
"Mon Dieu, que c'est beau !"
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