Création de clients WMI

WMI fournit une infrastructure standardisée de gestion des systèmes dont un certain nombre de clients différents peut tirer profit. Ces clients vont de l'outil de ligne de commande wmic.exe à System Center Operations Manager. Vous pouvez écrire vos propres clients WMI à l’aide de l’API de script WMI, de l’API C++ native ou des types de l’espace de noms de bibliothèque de classes System.Management .NET Framework.

Comment créer un client WMI

La fonctionnalité principale de WMI consiste à récupérer des objets à partir du référentiel WMI et à examiner les propriétés de ces objets. Vous pouvez également choisir de mettre à jour ces propriétés ou d'appeler des méthodes sur ces propriétés. Les exemples suivants montrent comment effectuer une tâche d’administration WMI de base : récupération du nom de l’ordinateur local.

Terme Description
Création d’un client avec PowerShell
WMI et PowerShell sont étroitement intégrés ; Par conséquent, la récupération d’objets WMI avec PowerShell consiste simplement à appeler l’applet de commande Get-WmiObject. Notez que pour la cohérence, le premier extrait de code indique explicitement un grand nombre des valeurs par défaut ; la seconde suppose que les valeurs par défaut sont correctes.

PowerShell
              
              #indique explicitement un grand nombre de paramètres par défaut $myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem" foreach ($computer in $myComputer) { "System Name: " + $computer.name } 

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

Création d'un client avec VBScript

VBScript était le langage de script d’origine qui était couramment utilisé avec WMI. Bien que PowerShell soit devenu plus populaire, la plupart des exemples de code existants dans cette documentation sont écrits en VBScript. Notez que cet exemple particulier de VBScript indique explicitement le chemin d'accès à la machine locale ainsi que le niveau d'usurpation d'identité ; ce n'est pas obligatoire, mais c'est souvent une bonne pratique.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

Création d'un client en C# (Microsoft.Management.Infrastructure)

Cet espace de noms contient la solution actuelle pour accéder à WMI avec du code managé et est connu sous le nom d’infrastructure de gestion Windows (MI ou WMIv2). Actuellement, MI est la technologie prise en charge pour la création de clients de gestion managée. Pour plus d'informations, voir Comment mettre en œuvre un client MI géré et comment mettre en œuvre un client MI natif.

C#
              
              en utilisant Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Création d'un client en C# (System.Management)

Cet espace de noms contient la solution d’origine pour accéder à WMI avec du code managé. Bien que les classes System.Management soient toujours disponibles, les classes Microsoft.Management.Infrastructure sont généralement plus efficaces et mieux adaptées. Par conséquent, il est recommandé d’utiliser les classes MI plutôt que les classes WMI d’origine.

C#
              
              en utilisant Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Le tableau ci-dessous répertorie les rubriques traitées dans cette section.

Rubrique Description
Connexion à WMI sur un ordinateur distant Décrit un certain nombre de problèmes qui surviennent lorsque les clients utilisent l’infrastructure WMI sur un ordinateur distant.
Tâches WMI pour les scripts et les applications Affiche un exemple de code client WMI.
Création d’une application ou d’un script WMI Fournit des informations sur la création de divers clients WMI.
Suivi des données de performance Décrit comment utiliser WMI pour surveiller les données de performances.
Réception d’un événement WMI Décrit comment afficher les événements WMI.
Surveillance des événements Décrit comment surveiller les événements WMI.
Interroger avec WQL Utilise la syntaxe du langage de requêtes WMI (WQL).
Interrogation de l’état des fonctionnalités facultatives Dans Windows 7, WMI a implémenté la classe Win32_OptionalFeature . Cette classe récupère les status des fonctionnalités facultatives présentes sur un ordinateur.
Description de l'emplacement d'un objet WMI Se concentre sur la syntaxe permettant de décrire l’emplacement d’une entité managée WMI.
Accès à d’autres fonctionnalités du système d’exploitation avec WMI Décrit comment écrire des clients WMI qui accèdent aux pilotes de périphérique, aux périphériques Active Directory et SNMP.
Accès aux données dans l’espace de noms interopérabilité Les fournisseurs d’association permettent aux clients WMI (Windows Management Instrumentation) de parcourir et de récupérer des profils et des instances de classe associées à partir de différents espaces de noms.
Manipulation des informations de classe et d’instance Décrit les tâches courantes que les clients WMI doivent effectuer.
Liaison de classes Décrit le fournisseur d’affichage et comment il peut être utilisé pour rassembler des informations provenant de plusieurs classes WMI.
Modification du registre du système Décrit comment les clients WMI peuvent utiliser WMI pour gérer les informations du registre système.