访问 WMI 限定符
限定符是一个提供有关 WMI 对象、方法或属性的详细信息的标记。 有时可能需要访问限定符中存储的数据。 例如,一项常见任务是通过尝试检索某个方法的 Implemented 限定符来确定提供程序是否实现了该方法。 有关详细信息,请参阅 WMI 限定符和添加限定符。
可以在 PowerShell 中检索 WMI 对象的限定符,方法是首先检索对象,然后像检查任何其他属性一样检查限定符。
使用 PowerShell 检索限定符
使用 Get-WmiObject 检索要查看其限定符的对象,然后通过 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 }
有关详细信息,请参阅检索 WMI 实例。
可以在 C# 中检索 WMI 实例上的限定符,方法是首先检索对象,然后将限定符作为一个集合进行检查。
使用 C# 检索限定符 (Microsoft.System.Management)
通过使用指定的类名和命名空间创建 CimInstance 对象,检索要查看其限定符的类。
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);
有关详细信息,请参阅检索 WMI 实例。
可以从 CimInstance.CimClass.CimClassQualifiers 检索类限定符,从 CimInstance.CimClass.CimClassProperties 检索属性限定符,从 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()); } }
有关详细信息,请参阅检索 WMI 实例。
可以在 C# 中检索 WMI 对象上的限定符,方法是首先检索对象,然后将限定符作为一个集合进行检查。
注意
System.Management 是用于访问 WMI 的原始 .NET 命名空间;但是,此命名空间中的 API 通常运行较慢,并且相对于其更新式的 Microsoft.Management.Infrastructure 对应项,它们无法缩放。
使用 C# 检索限定符 (System.Management)
使用 ManagementObject 检索要查看其限定符的对象。
using System.Management; ... ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
有关详细信息,请参阅检索 WMI 实例。
将限定符放入 QualifierDataCollection 中,并通过 QualifierData 值进行枚举。
QualifierDataCollection myQualifiers = myDisk.Qualifiers; foreach (QualifierData qd in myQualifiers) { Console.WriteLine(qd.Name + ": " + qd.Value); } Console.ReadLine();
有关详细信息,请参阅检索 WMI 实例。
以下过程介绍如何使用 VBScript 检索限定符。
使用 VBScript 检索限定符
检索要查看其限定符的对象,如以下示例所示:
Set Process = GetObject("winmgmts:Win32_Process")
通过 SWbemObject.Qualifiers_ 属性访问 对象的限定符,如以下示例所示:
for each Qualifier in Process.Qualifiers_ WScript.Echo " " & Qualifier.Name next
以下代码示例介绍如何访问 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
以下过程介绍如何使用 C++ 检索限定符。
使用 C++ 检索限定符
检索要查看其限定符的对象。
检索对象的最常见方法是使用对 GetObject 或 GetObjectAsync 的调用。 有关详细信息,请参阅检索 WMI 类或实例数据。
通过调用 IWbemClassObject::GetPropertyQualifierSet 或 IWbemClassObject::GetMethodQualifierSet 方法检索给定属性的限定符集。
通过返回的 IWbemQualifierSet 接口访问对象的限定符。