Un bref guide sur Windows Management Instrumentation (WMI)



L’architecture des informations et des opérations de gestion au sein des systèmes d’exploitation Windows est désignée par l’acronyme WMI, signifiant Windows Management Instrumentation.

WMI joue également un rôle crucial en fournissant des données de gestion à d’autres éléments du système d’exploitation et à divers produits, tels que SCOM (System Center Operations Manager) ou encore Windows Remote Management.

Qu’est-ce que Windows Management Instrumentation (WMI) ?

WMI constitue une plateforme de gestion et de surveillance, englobant le système d’exploitation ainsi que diverses applications et services Microsoft, fonctionnant sur des ordinateurs personnels, des serveurs et d’autres périphériques connectés au réseau.

Elle met à disposition une interface de programmation complète, modulable et simple d’utilisation, offrant un accès par programme aux informations et aux services des ordinateurs gérés par Microsoft et d’autres dispositifs en réseau.

WMI est notamment employé pour la découverte et la surveillance du système d’exploitation, des services et applications présents sur l’ordinateur, ainsi que pour l’accès aux données du registre et du système de fichiers. De plus, il permet de créer et de gérer des scripts et des programmes dédiés à l’automatisation de la gestion et de l’administration de l’ordinateur.

Le langage de programmation WQL (Windows Query Language) est utilisé par WMI pour interroger des informations et exécuter des opérations sur le système d’exploitation, les ordinateurs et les périphériques.

De plus, WMI offre un accès à PowerShell, outil d’administration particulièrement puissant et flexible pour Windows, avec lequel il est possible de développer des scripts d’automatisation.

En outre, WMI permet la création d’applications personnalisées, enrichissant les fonctionnalités de gestion et d’administration des systèmes et applications Windows.

Les utilisateurs souhaitant suivre l’état de leurs machines, effectuer des dépannages de base et collecter des données de performance trouveront WMI particulièrement utile.

Quel est l’objectif de WMI ?

Au sein d’un réseau d’entreprise Windows, WMI se révèle précieux par sa capacité à simplifier l’exploitation et la gestion des éléments du réseau, en fournissant des données à d’autres produits, permettant ainsi des améliorations et une évolutivité accrue.

L’objectif principal de WMI est de fournir un cadre de gestion unifié pour tous les aspects d’un système Windows, incluant :

  • Les composants du système d’exploitation
  • Les processus et les threads
  • Les prestations de service
  • Les périphériques
  • Les pilotes
  • Les applications
  • Les comptes utilisateurs
  • Les paramètres de sécurité

L’implémentation de WMI permet de réduire les coûts et les délais liés aux opérations et au développement de systèmes Windows. WMI permet également de surveiller les événements systèmes et de collecter les données de performance, utiles pour résoudre les problèmes ou suivre l’évolution au fil du temps.

L’utilisation la plus courante de WMI est l’automatisation des tâches administratives et l’accès aux données sans interaction directe avec le système d’exploitation. Cela fait de WMI une alternative de choix pour les administrateurs et développeurs de logiciels souhaitant automatiser des processus chronophages.

De la surveillance des performances du système à l’acquisition de données d’applications, tout devient possible avec WMI. Les développeurs peuvent ainsi créer des applications plus intelligentes, tandis que les administrateurs informatiques peuvent accomplir leurs tâches plus efficacement.

WMI fournit une implémentation de référence pour l’accès aux informations système et s’impose comme un outil essentiel à la gestion et à la surveillance des systèmes Windows. Il est également à la base d’Azure Machine Learning et d’AzureML, et sert de socle à une multitude de produits tiers.

Utilisation de WMI

Windows Management Instrumentation (WMI) est la mise en œuvre par Microsoft de la gestion d’entreprise basée sur le web (WBEM), une initiative sectorielle visant à développer des technologies standardisées pour l’accès aux informations de gouvernance d’entreprise.

WMI représente les systèmes, applications, réseaux, périphériques et autres éléments gérés, en utilisant la norme industrielle CIM (Common Information Model). Le groupe de travail sur la gestion distribuée (DMTF) est à l’origine et assure la maintenance du CIM.

La conception de WMI est polyvalente, prenant en charge un large éventail de tâches d’administration et de gestion, tout en offrant une architecture flexible et extensible. Cela permet aux fabricants de développer de nouveaux fournisseurs WMI pour prendre en charge de nouveaux dispositifs, applications et autres avancées.

Autres usages de WMI :

  • Gestion globale du système d’exploitation Windows ainsi que des périphériques et services réseau Microsoft.
  • Possibilité de se connecter à des ordinateurs distants pour accéder à leurs données WMI.
  • Découverte d’informations système, telles que les programmes et services configurés en cours d’exécution.
  • Récupération d’informations sur les spécifications matérielles et exécution d’actions telles que l’arrêt ou le redémarrage du système.
  • Lancement d’applications, démarrage, arrêt et configuration de services, ainsi qu’accès aux données.
  • Les développeurs d’applications de gestion peuvent utiliser cette API pour créer des scripts en Visual Basic ou Windows Scripting Host (WSH).

Architecture WMI

WMI (Windows Management Instrumentation) est une technologie Microsoft introduite initialement avec Windows 2000. Elle permet aux développeurs de créer des programmes de gestion compatibles avec tout système prenant en charge WMI.

Examinons l’architecture et la terminologie de WMI.

Le flux de l’architecture WMI commence avec les objets : un composant tel qu’un disque dur, une carte réseau, un système d’exploitation ou un service est un objet géré (pouvant être géré via WMI). L’infrastructure WMI reçoit les données d’un objet via un fournisseur, qui achemine les messages de WMI à l’objet.

Un fournisseur WMI est constitué d’une DLL et d’un fichier MOF (Managed Object Format) qui surveille les événements et les données des objets. WMI catégorise les fournisseurs en fonction des fonctionnalités offertes par l’interface du fournisseur.

De nombreux fournisseurs WMI sont intégrés à Windows, notamment un fournisseur Active Directory, un fournisseur WMI de données de configuration de démarrage (BCD), un fournisseur de système de fichiers distribués (DFS), un fournisseur de journal des événements, un fournisseur Hyper-V WMI, un fournisseur Win32, un fournisseur de registre et le fournisseur SNMP.

L’infrastructure WMI est un composant du système d’exploitation Microsoft Windows connu sous le nom de service WMI (winmgmt). Le noyau WMI et le référentiel WMI constituent les deux parties de cette infrastructure.

Le référentiel WMI est un stockage de données hiérarchique, organisé par espaces de noms WMI, également connu sous l’appellation Common Information Model (CIM). Le service WMI établit un certain nombre d’espaces de noms au démarrage du système, notamment root default, rootcimv2 et root subscription.

De plus, le service génère un ensemble par défaut de définitions de classe, incluant les classes système Win32 et WMI. D’autres espaces de noms WMI peuvent être créés par des fournisseurs WMI supplémentaires, chacun contenant de multiples objets WMI.

Le service WMI joue un rôle d’intermédiaire entre les fournisseurs, les applications de gestion et le référentiel WMI. Le référentiel ne contient que des données statiques sur les objets, telles que les classes définies par les fournisseurs. La plupart des données sont obtenues dynamiquement par WMI à partir du fournisseur, lorsque cela est requis par un client.

Un consommateur WMI est une application ou un script de gestion communiquant avec l’infrastructure WMI. À l’aide de l’API COM pour WMI ou de l’API de script pour WMI, un programme de gestion peut interroger et examiner des données, exécuter des méthodes de fournisseur et s’abonner à des événements.

WMI met en place une interface standardisée pour la récupération locale et à distance des données de gestion. Cette interface uniforme fait abstraction des API du système d’exploitation, permettant aux applications et scripts de collecter des données de gestion sans avoir à connaître l’API spécifique du système d’exploitation.

Comment lancer une requête WMI ?

La polyvalence de la plateforme WMI se manifeste notamment par la possibilité d’interroger son référentiel afin d’obtenir des informations sur les données de classe, d’instance ou de schéma. Ces informations se rapportent à l’inventaire des systèmes locaux et distants, aux systèmes d’exploitation, aux logiciels et à d’autres opérations administratives.

Types de requêtes

Il existe principalement deux types de requêtes pour extraire des informations du référentiel WMI :

Requête synchrone : c’est une requête qui maintient le contrôle du fonctionnement de votre application pendant toute la durée de l’interrogation. Plus facile à gérer qu’un appel asynchrone, car elle ne nécessite qu’un seul appel d’interface. Cependant, pour les recherches volumineuses ou basées sur le réseau, elle peut bloquer votre application.

Requête asynchrone : elle est préférable à la requête synchrone lorsque la vitesse d’un système ou d’un réseau est susceptible d’être affectée par l’interrogation d’une grande quantité de données.

WQL (Langage de requête WMI)

Le langage de requête WMI est une méthode courante pour interroger WMI.

Le SQL (Structured Query Language) est utilisé dans l’environnement des bases de données, tandis que le WQL est employé dans WMI. Ils présentent tous deux une structure de syntaxe similaire.

Les instructions WQL de base pour lancer une requête sont Select, From et Where.

Une requête WMI classique commence par sélectionner toutes les propriétés d’une classe WMI à l’aide de la commande « Select ». L’astérisque (« * ») sert à sélectionner chaque propriété d’une classe WMI. Après avoir choisi les propriétés (une ou plusieurs, ou toutes), le mot-clé « From » permet de spécifier la classe WMI à interroger. La syntaxe exacte peut être consultée dans les feuilles de triche SQL.

WQL peut être exécuté via l’outil WMI Tester (wbemtest.exe), installé par défaut avec le système d’exploitation Windows. Les requêtes WMI peuvent également être exécutées via Windows PowerShell, VBScript et le langage C.

Types de requêtes WQL

Les requêtes WQL sont utilisées pour obtenir trois types d’informations distinctes.

Requêtes d’objet : elles permettent de récupérer des informations sur les ressources système Windows.

Requêtes d’événement : utilisées pour suivre les modifications des journaux d’événements, le lancement de processus, l’état des services, la disponibilité des ordinateurs ou l’espace disque disponible, entre autres entités ou occurrences.

Requêtes de schéma : elles servent à obtenir des informations sur la structure du schéma WMI.

Exécution d’une requête

Voyons comment exécuter une requête d’objet.

La méthode qui suit indique comment vérifier les processus WIN_32 sur un système local.

L’outil WMI Tester est lancé depuis la ligne de commande en saisissant wbemtest.exe.

La fenêtre suivante apparaît.

Pour se connecter à l’espace de noms WMI qui contient la classe à interroger (RootCimv2 dans la plupart des cas) : cliquez sur l’onglet connexion.

Pour exécuter la requête, cliquez sur l’onglet « Requête » comme illustré ci-dessous :

Saisissez ensuite la requête souhaitée. Par exemple, récupérons tous les processus en cours d’exécution sur le système local en exécutant :

select * From Win32_process

Après avoir cliqué sur l’onglet Appliquer, les résultats s’affichent comme suit

Cette exécution basée sur l’interface graphique peut également être réalisée en ligne de commande via PowerShell :

Dans la plateforme PowerShell, pour obtenir la liste de tous les processus win_32, le code suivant est utilisé :

Get-WmiObject -Class Win32_Process

Pour tous les paramètres de requête PowerShell, veuillez consulter la page Gestion Microsoft PowerShell.

Pour exécuter cette requête en VBScript et en C, la page de documentation Microsoft fournit des informations détaillées.

Une autre méthode pour interroger le référentiel WMI est d’utiliser la commande WMIC :

  • Lancez CMD depuis l’invite de commande.
  • Saisissez WMIC et appuyez sur Entrée pour démarrer le programme.
  • L’invite de commande devient alors wmic:rootcli>.

Les administrateurs peuvent exécuter des requêtes WMI à partir de cette invite.

Par exemple, pour charger les informations du CPU d’un système local, la commande est :

wmic:rootcli> WMIC CPU

Les résultats/informations seront affichés dans l’invite de commande.

AddressWidth  Architecture  AssetTag                Availability  Caption                                 Characteristics  ConfigManagerErrorCode  ConfigManagerUserConfig  CpuStatus  CreationClassName  CurrentClockSpeed  CurrentVoltage  DataWidth  Description                             DeviceID  ErrorCleared  ErrorDescription  ExtClock  Family  InstallDate  L2CacheSize  L2CacheSpeed  L3CacheSize  L3CacheSpeed  LastErrorCode  Level  LoadPercentage  Manufacturer  MaxClockSpeed  Name                                      NumberOfCores  NumberOfEnabledCore  NumberOfLogicalProcessors  OtherFamilyDescription  PartNumber              PNPDeviceID  PowerManagementCapabilities  PowerManagementSupported  ProcessorId       ProcessorType  Revision  Role  SecondLevelAddressTranslationExtensions  SerialNumber            SocketDesignation  Status  StatusInfo  Stepping  SystemCreationClassName  SystemName  ThreadCount  UniqueId  UpgradeMethod  Version  VirtualizationFirmwareEnabled  VMMonitorModeExtensions  VoltageCaps
64            9             To Be Filled By O.E.M.  3             Intel64 Family 6 Model 142 Stepping 10  252                                                               1          Win32_Processor    1801               7               64         Intel64 Family 6 Model 142 Stepping 10  CPU0                                      100       205                  1024                       6144         0                            6      31              GenuineIntel  1801           Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz  4              4                    8                                                  To Be Filled By O.E.M.                                            FALSE                     BFEBFBFF000806EA  3                        CPU   TRUE                                     To Be Filled By O.E.M.  U3E1               OK      3                     Win32_ComputerSystem     RENEE-HP     8                      51                      FALSE                          TRUE

Pour plus d’informations sur les alias WMIC et les verbes, veuillez consulter Microsoft.

FAQ sur WMI

Quels sont les ports utilisés par WMI ?

Les ports utilisés sont 49152 et 65535. Le Distributed Component Object Model (DCOM), sur lequel est basé WMI, utilise par défaut un port TCP choisi aléatoirement dans la plage 49152-65535 pour les connexions.

WMI est-il obsolète ?

WMI est toujours pris en charge. Cependant, depuis Windows 10 version 21H1 et la version du canal semestriel 21H1 de Windows Server, le programme de ligne de commande WMI (WMIC) n’est plus maintenu.

Quels sont les outils de surveillance WMI ?

De nombreux outils sont disponibles pour la surveillance de WMI. Voici quelques-uns des plus populaires :
SolarWinds WMI Monitor avec Server and Application Monitor
Paessler WMI Service Sensor avec PRTG
Nagios XI
Sapien WMI Explorer
Les outils gratuits incluent WMI Explorer et Adrem Free WMI Tools.

Comment résoudre les problèmes WMI ?

Des erreurs allant de l’absence de classes aux violations d’accès peuvent être rencontrées lors de l’accès aux données WMI locales ou distantes dans une application ou un script. Pour trouver des solutions à de tels problèmes, veuillez consulter le guide de dépannage Microsoft WMI.

Conclusion

En résumé, Windows Management Instrumentation est un outil puissant pour gérer un large éventail de fonctionnalités liées au système Windows. Bien qu’il puisse sembler complexe au premier abord, WMI peut s’avérer extrêmement utile pour tous ceux qui utilisent les systèmes Windows.