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)
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.
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)
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.
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
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.
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++
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.
Recupere o conjunto de qualificadores para uma determinada propriedade com uma chamada para os métodos IWbemClassObject::GetPropertyQualifierSet ou IWbemClassObject::GetMethodQualifierSet.
Acesse os qualificadores do objeto por meio da interface IWbemQualifierSet retornada.