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 オブジェクトの修飾子を取得するには、最初にそのオブジェクトを取得してから、修飾子をコレクションとして調べます。
Note
System.Management は、元来 WMI へのアクセスに使用されていた .NET 名前空間でした。しかし、この名前空間の API は一般に、より最しい Microsoft.Management.Infrastructure の対応する API と比較して低速で、拡張性も劣ります。
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")
オブジェクトを取得する最も一般的な方法は、GetObject メソッドを使用することです。 詳細については、「WMI インスタンスの取得」を参照してください。
次の例に示すように、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 インターフェイスを使用して、オブジェクトの修飾子にアクセスします。