Share via


Acceso a un calificador WMI

Un calificador es una etiqueta que proporciona más información sobre una propiedad, un método o un objeto WMI. En ocasiones, es posible que tenga que acceder a los datos almacenados en un calificador. Por ejemplo, una tarea común consiste en determinar si un proveedor implementa un método para lo cual recupera el calificador Implementado para ese método. Para más información, consulte Calificadores WMI e Incorporación de un calificador.

Puede recuperar los calificadores en un objeto WMI en PowerShell si recupera primero el objeto y, luego, examina los calificadores tal como lo haría con cualquier otra propiedad.

Para recuperar un calificador con PowerShell

  • Recupere el objeto cuyos calificadores desea ver mediante Get-WmiObject y, a continuación, acceda a los calificadores a través de la propiedad Qualifiers:

    $myDisk = get-wmiObject Win32_LogicalDisk
    $myDisk.qualifiers
    
    #or
    
    get-wmiObject Win32_LogicalDisk | format-list qualifiers
    
    #or
    
    $myDisk = get-wmiObject Win32_LogicalDisk
    foreach ($qual in $myDisk.Qualifiers)
    { $qual }
    

    Para más información, consulte Recuperación de una instancia de WMI.

Puede recuperar los calificadores de una instancia de WMI en C# si recupera primero el objeto y, luego, examina los calificadores como una colección.

Para recuperar un calificador con C# (Microsoft.System.Management)

  1. Recupere la clase cuyos calificadores desea ver mediante la creación de un objeto CimInstance con el nombre de clase y el espacio de nombres especificados.

    using Microsoft.Management.Infrastructure;
    ...
    CimSession mySession = CimSession.Create("localhost");
    CimInstance diskDrive = new CimInstance(className, Namespace);
    diskDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    CimInstance myDrive = mySession.GetInstance(Namespace, diskDrive);
    

    Para más información, consulte Recuperación de una instancia de WMI.

  2. Puede recuperar los calificadores de clase de CimInstance.CimClass.CimClassQualifiers, los calificadores de propiedad de CimInstance.CimClass.CimClassProperties y los calificadores de método de CimInstance.CimClass.CimClassMethods.

    Console.WriteLine("Class: " + myDrive.ToString());
    foreach (CimQualifier qualifier in myDrive.CimClass.CimClassQualifiers)
    {
       Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
    }
    
    foreach (CimPropertyDeclaration property in myDrive.CimClass.CimClassProperties)
    {
       Console.WriteLine(property.Name.ToString());
       foreach (CimQualifier qualifier in property.Qualifiers)
       {
          Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
       }
    }
    
    foreach (CimMethodDeclaration method in myDrive.CimClass.CimClassMethods)
    {
       Console.WriteLine(method.Name.ToString());
       foreach (CimQualifier qualifier in method.Qualifiers)
       {
          Console.WriteLine("     " + qualifier.Name.ToString() + ": " + qualifier.Value.ToString());
       }
    }
    

    Para más información, consulte Recuperación de una instancia de WMI.

Puede recuperar los calificadores de una objeto de WMI en C# si recupera primero el objeto y, luego, examina los calificadores como una colección.

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 un calificador con C# (System.Management)

  1. Recupere el objeto cuyos calificadores desea ver mediante ManagementObject.

    using System.Management;
    ...
    ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    

    Para más información, consulte Recuperación de una instancia de WMI.

  2. Coloque los calificadores en una colección QualifierDataCollection y enumere los valores QualifierData.

    
    QualifierDataCollection myQualifiers = myDisk.Qualifiers;
    foreach (QualifierData qd in myQualifiers)
    {
       Console.WriteLine(qd.Name + ": " + qd.Value);
    }
    Console.ReadLine();
    

    Para más información, consulte Recuperación de una instancia de WMI.

En el procedimiento siguiente, se describe cómo recuperar un calificador con VBScript.

Para recuperar un calificador con PowerShell

  1. Recupere el objeto cuyos calificadores desea ver, tal como se muestra en el ejemplo siguiente:

    Set Process = GetObject("winmgmts:Win32_Process")
    

    La manera más común de recuperar un objeto es usar el método GetObject. Para más información, consulte Recuperación de una instancia de WMI.

  2. Acceda a los calificadores del objeto mediante la propiedad SWbemObject.Qualifiers_, tal como se muestra en el ejemplo siguiente:

    for each Qualifier in Process.Qualifiers_
        WScript.Echo " " & Qualifier.Name
    next
    

En el ejemplo de código siguiente, se describe cómo acceder a todos los calificadores de un objeto Win32_Process.

On Error Resume Next
Set Process = GetObject("winmgmts:Win32_Process")
WScript.Echo ""
WScript.Echo "Class name is", Process.Path_.Class

'Get the qualifiers
WScript.Echo ""
WScript.Echo "Qualifiers:"
WScript.Echo ""
for each Qualifier in Process.Qualifiers_
    WScript.Echo " " & Qualifier.Name
next

if Err <> 0 Then
    WScript.Echo Err.Description
    Err.Clear
End if

En el procedimiento siguiente, se describe cómo recuperar un calificador con C++.

Para recuperar un calificador con C++

  1. Recupere el objeto cuyos calificadores desea ver.

    La manera más común de recuperar un objeto es mediante una llamada a GetObject o GetObjectAsync. Para más información, consulte Recuperación de datos de instancia o clase de WMI.

  2. Recupere el calificador establecido para una propiedad determinada con una llamada a los métodos IWbemClassObject::GetPropertyQualifierSet o IWbemClassObject::GetMethodQualifierSet.

  3. Acceda a los calificadores del objeto a través de la interfaz IWbemQualifierSet devuelta.