存取 WMI 限定符
限定符是標記,可提供WMI物件、方法或屬性的詳細資訊。 有時候,您可能需要存取儲存在限定符中的數據。 例如,常見的工作是藉由嘗試擷取該方法的 實 作限定符,判斷提供者是否實作方法。 如需詳細資訊,請參閱 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 介面存取物件的限定符。