限定符是提供有关 WMI 对象、方法或属性详细信息的标记。 有时,可能需要访问存储在限定符中的数据。 例如,常见任务是通过尝试检索该方法的 Implement 限定符来确定提供程序是否实现方法。 有关详细信息,请参阅WMI 限定符和添加限定符。
可以先检索 PowerShell 中的 WMI 对象上的限定符,然后像检查任何其他属性一样检查限定符。
使用 PowerShell 检索限定符
-
使用 Get-WmiObject检索要查看其限定符的对象,然后通过 Qualifiers 属性访问限定 符:
PowerShell复制
$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 对象,检索要查看其限定符的类。
CSharp复制
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中的方法限定符。
CSharp复制
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检索要查看其限定符的对象。
CSharp复制
using System.Management; ... ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
有关详细信息,请参阅检索 WMI 实例。
-
将限定符放入 QualifierDataCollection中,并通过 QualifierData 值枚举 。
CSharp复制
QualifierDataCollection myQualifiers = myDisk.Qualifiers; foreach (QualifierData qd in myQualifiers) { Console.WriteLine(qd.Name + ": " + qd.Value); } Console.ReadLine();
有关详细信息,请参阅检索 WMI 实例。
以下过程介绍如何使用 VBScript 检索限定符。
使用 VBScript 检索限定符
-
检索要查看其限定符的对象,如以下示例所示:
VB复制
Set Process = GetObject("winmgmts:Win32_Process")
-
通过 SWbemObject.Qualifiers _属性访问 对象的限定符,如以下示例所示:
VB复制
for each Qualifier in Process.Qualifiers_ WScript.Echo " " & Qualifier.Name next
下面的代码示例介绍如何访问 Win32 Process 对象上 _ 的所有限定 符。
VB复制
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 接口访问 对象的限定符。
示例
有关检索限定符的信息,请参阅 TechNet 库中的 Get-WmiClassMethodsAndWritableWmiProperties PowerShell 代码示例。