Partilhar via


Acessando um qualificador WMI

Um qualificador é uma etiqueta que fornece mais informações sobre um objeto WMI, método ou propriedade. Às vezes, você pode precisar 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 Adicionando um Qualificador.

Você pode recuperar os qualificadores em um objeto WMI no PowerShell recuperando primeiro o objeto e, em seguida, 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-WmiObjecte, em seguida, acesse os qualificadores por meio da propriedade Qualificadores:

    $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 Recuperando uma instância WMI.

Você pode recuperar os qualificadores em uma instância WMI em C# primeiro recuperando 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 da classe especificado e o namespace.

    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 Recuperando uma instância WMI.

  2. Você pode recuperar os qualificadores de classe do CimInstance.CimClass.CimClassQualifiers, os qualificadores de propriedade de CimInstance.CimClass.CimClassPropertiese 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 Recuperando uma instância WMI.

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

Observação

System.Management era o namespace .NET original usado para acessar o WMI; no entanto, as APIs neste namespace geralmente são mais lentas e não são dimensionadas tão bem em relação às suas contrapartes mais modernas 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 Recuperando uma instância WMI.

  2. Coloque os qualificadores em um QualifierDataCollectione enumere através dos QualifierData valores.

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

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

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

Para recuperar um qualificador usando o 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 GetObject método. Para obter mais informações, consulte Recuperando uma instância 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 Recuperando dados de classe ou instância 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 através da interface IWbemQualifierSetretornada por.