Compartir a través de


Recuperar una instancia de WMI

La recuperación de una instancia es uno de los procedimientos de recuperación más comunes que es probable que realice en WMI. Puede recuperar una instancia existente o crear una nueva instancia sin nombre. La ruta de acceso de WMI a la instancia existente es un parámetro obligatorio. Para obtener más información, vea Descripción de la ubicación de un objeto WMI.

Nota:

Al proporcionar una instancia, es posible que un proveedor no pueda proporcionar un valor para determinadas propiedades. A menos que se indique lo contrario en la descripción de la propiedad, no se puede deducir ningún significado de un valor vacío. Esto no se debe confundir con una cadena que tiene un valor NULL. En este caso, el valor se rellena. Está vacío pero tiene un valor: NULL.

 

Recupere una copia local de la instancia con una llamada al cmdlet Get-WmiObject de PowerShell.

Para recuperar una instancia de una clase WMI mediante PowerShell

  • Puede recuperar instancias específicas mediante los parámetros -class y -filter.

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

Puede recuperar una instancia de WMI con C# mediante la creación de un objeto de búsqueda con CimInstance para, posteriormente, rellenarla con los valores de clave pertinentes y, después, buscar ese objeto con una llamada a CimSession.GetInstance.

Para recuperar una instancia de una clase WMI mediante C# (Microsoft.Management.Infrastructure)

  1. Con el espacio de nombres Microsoft.Management.Infrastructure, cree un nuevo objeto CimInstance con el nombre de clase y el espacio de nombres correspondientes.

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "Win32_LogicalDisk";
    
    CimInstance myDrive = new CimInstance(className, Namespace);
    
  2. Cree una CimProperty que contenga el nombre y el valor de la propiedad de clave de la instancia que quiere buscar y agregue esa propiedad al objeto de clase.

    myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
  3. Recupere el objeto de WMI con una llamada a CimSession.GetInstance.

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

Puede recuperar una instancia de clase WMI específica o una colección de instancias de clase WMI mediante clases en el espacio de nombres System.Management.

Nota:

System.Management era el espacio de nombres de.NET original que se usaba para acceder a WMI; sin embargo, las API de este espacio de nombres suelen ser más lentas y no se escalan tan bien como sus homólogos más modernos Microsoft.Management.Infrastructure.

 

Para recuperar una instancia de una clase WMI mediante C# (System.Management)

  1. Recupere una copia local de una instancia específica mediante la creación de un ManagementObject nuevo, con el nombre y el valor de instancia específico pasados a través del parámetro ManagementPath. Después, puede recuperar los datos de instancia llamando explícitamente a ManagementObject.Get.

    using System.Management;
    ...
    ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    objInst.Get();
    
  2. Como alternativa, puede recuperar todas las instancias de una clase WMI buscándolas con un ManagementObjectSearcher y posteriormente enumerando a través de la clase ManagementObjectCollection devuelta.

    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();
    

    Para llamar implícitamente al método Get, acceda a la instancia. Para obtener más información, consulte Recuperar parte de una instancia de WMI.

Recupere una copia local de la instancia con una llamada al método GetObject de VBScript.

Para recuperar una instancia de una clase WMI mediante VBScript

  • Llame a GetObject con la ruta de acceso del objeto de la instancia, como se muestra en el ejemplo siguiente.

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

    La recuperación de una instancia específica requiere asignar un nombre como parte de la ruta de acceso del objeto.

En C++, llame a IWbemServices::GetObject.

Para recuperar una instancia de una clase WMI mediante C++