Le cadre des informations et des activités de gestion sur les systèmes d’exploitation Windows est appelé Windows Management Instrumentation (WMI).

WMI fournit également des données de gestion à d’autres composants du système d’exploitation et à d’autres produits, tels que SCOM (System Center Operations Manager) ou Windows Remote Management.

Qu’est-ce que l’instrumentation de gestion Windows (WMI) ?

WMI est une plate-forme de gestion et de surveillance du système d’exploitation et d’autres applications et services Microsoft sur des ordinateurs personnels, des serveurs et d’autres dispositifs de réseau.

WMI fournit une interface de programmation complète, évolutive et facile à utiliser qui permet un accès programmatique aux informations et aux services sur les ordinateurs gérés par Microsoft et sur d’autres périphériques de réseau.

Il est utilisé pour découvrir et surveiller le système d’exploitation, les services et les applications sur l’ordinateur, ainsi que les données du registre et du système de fichiers. Il permet également de créer et de gérer des scripts et des programmes qui automatisent la gestion et l’administration de l’ordinateur.

Il utilise le langage de programmation WQL (Windows Query Language) pour interroger des informations et effectuer des opérations sur le système d’exploitation, les ordinateurs et les périphériques.

Il vous donne également accès à PowerShell, l’un des outils d’administration les plus puissants et les plus souples de Windows, que vous pouvez utiliser pour créer des scripts d’automatisation.

En outre, WMI vous permet de créer des applications personnalisées qui offrent des fonctionnalités supplémentaires pour la gestion et l’administration des systèmes et des applications Windows.

Les utilisateurs qui ont besoin de surveiller l’état de leurs machines, d’effectuer un dépannage de base et de collecter des données sur les performances trouveront WMI très pratique.

Quel est l’objectif de WMI ?

WMI est utile dans un réseau d’entreprise Windows car il simplifie le fonctionnement et la gestion des composants du réseau d’entreprise en fournissant des données à d’autres produits en vue d’une amélioration et d’une évolutivité accrues.

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

  • Les composants du système d’exploitation
  • Les processus et les fils d’exécution
  • Les services
  • Les périphériques
  • Les pilotes
  • Applications
  • Comptes d’utilisateurs
  • Paramètres de sécurité

L’objectif de l’invention WMI est de réduire les coûts et le temps consacrés aux opérations et au développement liés aux systèmes Windows. WMI vous permet également de surveiller les événements du système et de collecter des données sur les performances. Ces données peuvent être utilisées pour résoudre des problèmes ou pour suivre des tendances dans le temps.

WMI est le plus souvent utilisé pour automatiser les tâches administratives et accéder aux données sans avoir à traiter directement avec le système d’exploitation. Par conséquent, WMI est une alternative fantastique pour les administrateurs et les développeurs de logiciels qui ont besoin d’automatiser des processus fastidieux.

Il permet de tout faire, de la surveillance des performances du système à l’acquisition de données d’application. Il permet aux développeurs de créer des applications plus intelligentes, tout en garantissant que les administrateurs informatiques puissent accomplir leurs tâches avec un minimum d’efforts.

WMI fournit une implémentation de référence pour l’accès aux informations système et constitue un outil clé pour la gestion et la surveillance des systèmes Windows. C’est la pierre angulaire d’Azure Machine Learning et d’AzureML, et il est utilisé pour alimenter un large éventail de produits tiers.

Utilisation de WMI

Windows Management Instrumentation (WMI) est la version de Microsoft de Web-Based Enterprise Management (WBEM), une initiative de l’industrie visant à développer des technologies standardisées pour l’accès aux informations de gouvernance d’entreprise.

WMI représente des systèmes, des applications, des réseaux, des dispositifs et d’autres composants gérés à l’aide de la norme industrielle Common Information Model (CIM). La Distributed Management Task Force (DMTF) crée et maintient le CIM.

La conception de WMI est polyvalente, prenant en charge un large éventail de tâches d’administration et de gestion, et offrant une architecture flexible et extensible qui permet aux fabricants d’écrire de nouveaux fournisseurs WMI pour prendre en charge de nouveaux dispositifs, applications et autres progrès.

D’autres utilisations sont possibles :

  • Gestion complète du système d’exploitation Windows et des dispositifs et services de réseau Microsoft.
  • Il peut être utilisé pour connecter les ordinateurs distants afin d’accéder aux données WMI
  • Découvrir des informations sur le système, telles que les programmes en cours d’exécution et les services configurés.
  • Récupérer des informations sur les spécifications du matériel et effectuer des actions, telles que l’arrêt ou le redémarrage du système.
  • Lancer des applications, démarrer, arrêter, configurer des services et accéder à des 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 initialement présentée dans Windows 2000. Elle permet aux programmeurs de construire des programmes de gestion qui fonctionnent avec n’importe quel système supportant WMI.

Voyons l’architecture et la terminologie de WMI.

Le flux de l’architecture WMI commence par 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é (qui peut être géré via WMI). L’infrastructure WMI reçoit des données d’un objet par l’intermédiaire d’un fournisseur. Ce dernier fournit et reçoit des messages de WMI et les transmet à l’objet.

Un fournisseur WMI comprend une DLL et un fichier MOF (Managed Object Format) qui surveille les événements et les données des objets. WMI classe les fournisseurs en fonction de la fonctionnalité fournie par l’interface du fournisseur.

Il existe de nombreux fournisseurs WMI intégrés dans Windows, notamment le fournisseur Active Directory, le fournisseur WMI Boot Configuration Data (BCD), le fournisseur Distributed File System (DFS), le fournisseur Event Log, le fournisseur Hyper-V WMI, le fournisseur Win32, le fournisseur Registry 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 sont les deux parties de l’infrastructure WMI.

Le référentiel WMI est un stockage de données hiérarchique organisé par les espaces de noms WMI, souvent connus sous le nom de modèle d’information commun (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.

En outre, le service produit un ensemble de définitions de classes par défaut, qui comprend les classes système Win32 et WMI. D’autres espaces de noms WMI peuvent être créés par d’autres fournisseurs WMI, et chaque espace de noms contient plusieurs objets WMI.

Le service WMI sert d’intermédiaire entre les fournisseurs, les applications de gestion et le référentiel WMI. Seules les données statiques concernant les objets sont stockées dans le référentiel, telles que les classes définies par les fournisseurs. Le service WMI obtient la plupart des données de manière dynamique auprès du fournisseur lorsqu’un client les demande.

Un consommateur WMI est une application de gestion ou un script qui communique avec l’infrastructure WMI. En utilisant l’API COM pour WMI ou l’API Scripting pour WMI, un programme de gestion peut interroger, détailler des données, exécuter des méthodes de fournisseur et s’abonner à des événements.

WMI crée une interface normalisée pour l’extraction locale et à distance des données de gestion. Cette interface uniforme fait abstraction des interfaces de programmation d’applications (API) du système d’exploitation. Cela permet aux applications et aux scripts de collecter des données de gestion sans avoir besoin de connaître l’API du système d’exploitation.

Comment exécuter une requête WMI ?

L’une des caractéristiques de la polyvalence de la plateforme WMI est la possibilité d’interroger son référentiel afin d’obtenir des détails sur les données relatives à la classe, à l’instance ou au schéma. Ces mesures sont liées à l’inventaire des systèmes locaux et distants, des systèmes d’exploitation, des logiciels et d’autres activités administratives.

Types de requêtes

D’une manière générale, il existe deux types de requêtes utilisées pour extraire des informations du référentiel WMI :

Requête synchrone : Il s’agit d’une requête qui garde le contrôle du fonctionnement de votre application pendant toute la durée de la requête. Elle est plus facile qu’un appel asynchrone car elle ne nécessite qu’un seul appel à l’interface. Pour les recherches importantes ou les requêtes basées sur le réseau, elle peut cependant bloquer votre application.

Requête asynchrone : Lorsque la vitesse d’un système ou d’un réseau est affectée par l’interrogation d’un groupe important de données, il est préférable d’utiliser une requête asynchrone.

WQL (langage de requête WMI)

Le langage de requête WMI est l’une des méthodes les plus répandues pour interroger WMI.

Le langage SQL (Structured Query Language) est utilisé dans l’environnement des bases de données, tandis que le langage WQL est utilisé dans WMI. Ces deux langages ont une structure syntaxique similaire.

Select, From et Where sont les instructions WQL fondamentales utilisées pour lancer la requête.

Une requête WMI typique commence par la sélection de toutes les propriétés d’une classe WMI à l’aide de la commande “Select”. L’astérisque (“*”) est utilisé pour sélectionner toutes les propriétés d’une classe WMI. Vous pouvez utiliser le mot-clé “From” pour spécifier la classe WMI à interroger après avoir sélectionné les propriétés (une ou plusieurs propriétés, ou toutes). Vous pouvez consulter la feuille de contrôle SQL pour connaître la syntaxe exacte.

WQL peut être exécuté par WMI Tester (wbemtest.exe), qui est 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.

Type de requêtes WQL

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

Requêtes sur les objets : Ces requêtes permettent d’obtenir des informations sur les ressources du système Windows.

Requêtes sur les événements : Ces requêtes sont utilisées pour suivre les modifications apportées aux journaux d’événements, le lancement de processus, l’état des services, la disponibilité des ordinateurs ou la quantité d’espace disque libre, entre autres entités ou événements.

Requêtes de schéma : Ces requêtes sont utilisées pour obtenir des détails sur la structure du schéma WMI.

Exécution d’une requête

Voyons comment exécuter une requête sur un objet.

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

L’outil WMI Tester est exécuté via la ligne de commande en saisissant wbemtest.exe.

La fenêtre suivante s’affiche.

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

Pour exécuter la requête, cliquez sur l’onglet ‘Query’ comme indiqué ci-dessous :

Saisissez ensuite la requête pour laquelle vous souhaitez récupérer les informations. 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, vous obtiendrez les résultats suivants

L’exécution basée sur l’interface graphique ci-dessus peut également être effectuée à l’invite de commande par l’intermédiaire de PowerShell :

Dans la plateforme PowerShell, pour obtenir la liste de tous les processus Win_32, le code ci-dessous est utilisé :

Get-WmiObject -Class Win32_Process

Pour obtenir tous les paramètres de la requête PowerShell, visitez la page Microsoft PowerShell Management.

Pour exécuter cette requête en langage VBScript et C, la page de documentation de Microsoft vous fournira des informations complètes.

Une autre méthode pour interroger le référentiel WMI consiste à utiliser la commande WMIC :

  • Exécutez CMD à partir d’une invite de commande
  • Tapez WMIC et entrez pour lancer le programme
  • L’invite de commande devient alors wmic:root\cli>.

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

Par exemple, pour charger des informations sur le processeur d’un système local, la commande sera la suivante :

wmic:root\cli> WMIC CPU

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

AddressWidth Architecture AssetTag Disponibilité Caption Caractéristiques 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 A remplir par 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 A remplir par l'O.E.M. FALSE BFEBFBFF000806EA 3 CPU TRUE A remplir par l'O.E.M. U3E1 OK 3 Win32_ComputerSystem RENEE-HP 8 51 FALSE TRUE

Pour plus d’informations sur les alias et les verbes WMIC, consultez le site Microsoft wmic.

FAQ sur WMI

Quels sont les ports utilisés dans WMI ?

Les ports utilisés sont 49152 et 65535. Le modèle DCOM (Distributed Component Object Model), sur lequel est basé WMI, utilise par défaut un port TCP choisi au hasard pour les connexions entre 49152 et 65535.

WMI est-il obsolète ?

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

Quels sont les outils de surveillance WMI ?

De nombreux outils sont disponibles pour surveiller WMI. Toutefois, une poignée d’entre eux sont particulièrement populaires :
SolarWinds WMI Monitor with Server and Application Monitor
Paessler WMI Service Sensor with PRTG
Nagios XI
Sapien WMI Explorer
Free Tools are WMI Explorer, Adrem Free WMI Tools

Comment résoudre les problèmes WMI

Vous pouvez rencontrer des erreurs allant de classes manquantes à des violations d’accès lorsque vous tentez d’accéder à des données WMI locales ou distantes dans une application ou un script. Consultez le guide de dépannage Microsoft WMI pour trouver des solutions à ces erreurs.

Conclusion

D’une manière générale, Windows Management Instrumentation est un outil puissant qui peut être utilisé pour gérer un large éventail de fonctions liées au système Windows. WMI peut s’avérer un outil très utile pour toute personne travaillant avec des systèmes Windows, même s’il peut sembler intimidant au départ.