Archives de catégorie : WMI

WMI événements permanents

Windows Management Instrumentation (WMI) est une technologie Microsoft permettant de manager des serveurs et postes de travail distants à travers des scripts ou de la programmation.

Une des fonctionnalités de WMI qui est assez méconnue est la possibilité de créer de événements permanents.

Ces événements sont démarrés lorsque les conditions d’une query WQL sont remplies.

Dans cet article nous allons voir comment on peut mettre en place un événement permanent qui démarre lorsque une clé USB est insérée dans l’ordinateur.

Les événements permanents sont constitués de trois éléments:

  • Un filtre qui définit la query à exécuter.
  • Un consommateur (ou consumer), qui va consommer l’événement en exécutant un programme ou un script lorsque le filtre attrape l’événement.
  • Une liaison (ou bind) qui lie le filtre au consommateur.

Créons un filtre:

Définissons le langage pour la query:

Définissons la query:

Dans notre cas, la query sélectionne tous les événements dans la liste des événements de créations mais filtre pour récupérer que ceux qui concernent la création de disques logiques (win32_logicaldisk) et ceci toutes les 5 secondes.

Donnons un nom à notre filtre et définissons son espace de nommage:

Finissons la création du filtre, mais récupérons également son chemin d’accès, car il s’agit d’un filtre permanent, c-a-d définitif. Il restera même si on redémarre la machine. Nous avons besoin du chemin d’accès pour le supprimer.

Notre filtre créé, regardons maintenant le consommateur.

Définissons la commande à exécuter

Dans notre cas, nous allons invoquer un script Powershell qui regardera la lettre du lecteur USB. Si cette lettre n’est pas « O: » le script changera la lettre utilisée.

Définissons le path et l’exécutable pour le programme à démarrer:

Sauvegardons notre consommateur et récupérons le path;

Voilà notre consommateur et notre filtre sont prêts. Créons le lien entre les deux:

Indiquons le filtre et le consommateur:

Sauvegardons le lien et récupérons le path:

Regardons maintenant le script reassignDriveLetter.ps1.

En gros ce script va regarder la liste des drives sur l’ordinateur, et trouver celui est un drive USB. Si la lettre du drive n’est pas « O: » il la changera:

Si l’on veut supprimer ces événements on peut utiliser leur path:

 

Voici le script complet:

 

Partager ce contenu