Acessando um qualificador WMI

Um qualificador é uma marca que fornece mais informações sobre um objeto, método ou propriedade WMI. Às vezes pode ser necessário acessar os dados armazenados em um qualificador. Por exemplo, uma tarefa comum é determinar se um provedor implementa um método tentando recuperar o qualificador Implemented para esse método. Para obter mais informações, consulte Qualificadores WMI e Adicionar um qualificador.

Você pode recuperar os qualificadores em um objeto WMI no PowerShell recuperando primeiro o objeto e examinando os qualificadores como faria com qualquer outra propriedade.

Para recuperar um qualificador usando o PowerShell

  • Recupere o objeto cujos qualificadores você deseja exibir usando Get-WmiObject e acesse os qualificadores por meio da propriedade 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 obter mais informações, consulte Recuperar uma instância do WMI.

Você pode recuperar os qualificadores em uma instância do WMI em C# recuperando primeiro o objeto e, em seguida, examinando os qualificadores como uma coleção.

Para recuperar um qualificador usando C# (Microsoft.System.Management)

  1. Recupere a classe cujos qualificadores você deseja exibir criando um objeto CimInstance, usando o nome e o namespace de classe 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 obter mais informações, consulte Recuperar uma instância do WMI.

  2. Você pode recuperar os qualificadores de classe de CimInstance.CimClass.CimClassQualifiers, os qualificadores de propriedade de CimInstance.CimClass.CimClassProperties e os qualificadores 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 obter mais informações, consulte Recuperar uma instância do WMI.

Você pode recuperar os qualificadores em um objeto WMI em C# recuperando primeiro o objeto e examinando os qualificadores como uma coleção.

Observação

O System.Management era o namespace original do .NET usado para acessar o WMI. No entanto, as APIs nesse namespace geralmente são mais lentas e não escalam tão bem em relação às contrapartes mais modernas do Microsoft.Management.Infrastructure.

 

Para recuperar um qualificador usando C# (System.Management)

  1. Recupere o objeto cujos qualificadores você deseja exibir usando ManagementObject.

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

    Para obter mais informações, consulte Recuperar uma instância do WMI.

  2. Coloque os qualificadores em um QualifierDataCollection e enumere por meio dos valores QualifierData.

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

    Para obter mais informações, consulte Recuperar uma instância do WMI.

O procedimento a seguir descreve como recuperar um qualificador usando VBScript.

Para recuperar um qualificador usando VBScript

  1. Recupere o objeto cujos qualificadores você deseja exibir, conforme mostrado no exemplo a seguir:

    Set Process = GetObject("winmgmts:Win32_Process")
    

    A maneira mais comum de recuperar um objeto é usando o método GetObject. Para obter mais informações, consulte Recuperar uma instância do WMI.

  2. Acesse os qualificadores do objeto por meio da propriedade SWbemObject.Qualifiers_, conforme mostrado no exemplo a seguir:

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

O exemplo de código a seguir descreve como acessar todos os qualificadores em um 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

O procedimento a seguir descreve como recuperar um qualificador usando C++.

Para recuperar um qualificador usando C++

  1. Recupere o objeto cujos qualificadores você deseja exibir.

    A maneira mais comum de recuperar um objeto é usando uma chamada para GetObject ou GetObjectAsync. Para obter mais informações, consulte Recuperar dados de classe ou de instância do WMI.

  2. Recupere o conjunto de qualificadores para uma determinada propriedade com uma chamada para os métodos IWbemClassObject::GetPropertyQualifierSet ou IWbemClassObject::GetMethodQualifierSet.

  3. Acesse os qualificadores do objeto por meio da interface IWbemQualifierSet retornada.