Partager via


Récupération d’une instance WMI

La récupération d’un instance est l’une des procédures de récupération les plus courantes que vous êtes susceptible d’effectuer dans WMI. Vous pouvez récupérer une instance existante ou créer une instance sans nom. Le chemin d’accès WMI à l’instance existante est un paramètre obligatoire. Pour plus d’informations, consultez Description de l’emplacement d’un objet WMI.

Remarque

Lorsqu’il fournit une instance, un fournisseur peut ne pas être en mesure d’indiquer de valeur pour certaines propriétés. Sauf indication contraire dans la description de la propriété, vous ne pouvez déduire aucune signification d’une valeur vide. Il ne faut pas le confondre avec une chaîne qui a une valeur NULL. Dans ce cas, la valeur est renseignée. Cette chaîne est vide, mais a une valeur NULL.

 

Récupérez une copie locale de l’instance avec un appel à l’applet de commande PowerShell Get-WmiObject.

Pour récupérer une instance d’une classe WMI à l’aide de PowerShell

  • Vous pouvez récupérer des instances spécifiques à l’aide des paramètres -class et -filter.

    Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
    

Vous pouvez récupérer une instance WMI à l’aide de C# en créant un objet de recherche à l’aide de CimInstance, en la remplissant avec les valeurs de clé appropriées, puis en recherchant cet objet avec un appel CimSession.GetInstance.

Pour récupérer une instance d’une classe WMI à l’aide de C# (Microsoft.Management.Infrastructure)

  1. À l’aide de l’espace de noms Microsoft.Management.Infrastructure, créez un objet CimInstance avec le nom de classe et l’espace de noms appropriés.

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "Win32_LogicalDisk";
    
    CimInstance myDrive = new CimInstance(className, Namespace);
    
  2. Créez un objet CimProperty qui contient le nom et la valeur de la propriété clé de l’instance que vous souhaitez rechercher, puis ajoutez cette propriété à votre objet de classe.

    myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
  3. Récupérez l’objet de WMI avec un appel CimSession.GetInstance.

    CimSession mySession = CimSession.Create("localhost");
    CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
    

Vous pouvez récupérer une instance de classe WMI spécifique ou une collection d’instances de classe WMI à l’aide de classes dans l’espace de noms System.Management.

Remarque

System.Management était l’espace de noms .NET d’origine utilisé pour accéder à WMI. Toutefois, les API de cet espace de noms sont généralement plus lentes et ne se mettent pas à l’échelle aussi bien que leurs homologues Microsoft.Management.Infrastructure plus modernes.

 

Pour récupérer l’instance d’une classe WMI à l’aide de C# (System.Management)

  1. Récupérez une copie locale d’une instance spécifique en créant un nouvel objet ManagementObject, avec le nom et la valeur de l’instance spécifique transmis via le paramètre ManagementPath. Vous pouvez ensuite récupérer les données de l’instance en appelant explicitement ManagementObject.Get.

    using System.Management;
    ...
    ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    objInst.Get();
    
  2. Vous pouvez également récupérer toutes les instances d’une classe WMI en les recherchant avec un objet ManagementObjectSearcher, puis en procédant à une énumération au travers de l’objet ManagementObjectCollection retourné.

    using System.Management;
    ...
    ManagementObjectSearcher mgmtObjSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
    ManagementObjectCollection colDisks = mgmtObjSearcher.Get();
    
    foreach (ManagementObject objDisk in colDisks)
    {
       Console.WriteLine("Device ID : {0}", objDisk["DeviceID"]);
    }
    
    Console.ReadLine();
    

    Vous pouvez appeler implicitement la méthode Get en accédant à l’instance. Pour plus d’informations, consultez Récupération d’une partie d’une instance WMI.

Récupérez une copie locale de l’instance avec un appel à la méthode GetObject de VBScript.

Pour récupérer une instance d’une classe WMI à l’aide de VBScript

  • Appelez GetObject avec le chemin d’accès de l’objet de l’instance comme indiqué dans l’exemple suivant.

    Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
    

    La récupération d’une instance spécifique nécessite de donner un nom dans le chemin d’accès de l’objet.

En C++, appelez IWbemServices::GetObject.

Pour récupérer une instance d’une classe WMI à l’aide de C++