Accessing a WMI qualifier
A qualifier is a tag that provides more information about a WMI object, method, or property. At times, you may need to access the data stored in a qualifier. For example, a common task is to determine if a provider implements a method by attempting to retrieve the Implemented qualifier for that method. For more information, see WMI Qualifiers and Adding a Qualifier.
You can retrieve the qualifiers on a WMI object in PowerShell by first retrieving the object, and then examining the qualifiers as you would any other property.
To retrieve a qualifier using PowerShell
Retrieve the object whose qualifiers you want to view using Get-WmiObject, and then access the qualifiers through the Qualifiers property:
$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 }
For more information, see Retrieving a WMI Instance.
You can retrieve the qualifiers on a WMI instance in C# by first retrieving the object, and then examining the qualifiers as a collection.
To retrieve a qualifier using C# (Microsoft.System.Management)
Retrieve the class whose qualifiers you want to view by creating a CimInstance object, using the specified class name and namespace.
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);
For more information, see Retrieving a WMI Instance.
You can retrieve the class qualifiers from the CimInstance.CimClass.CimClassQualifiers, the property qualifiers from CimInstance.CimClass.CimClassProperties, and the method qualifiers from 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()); } }
For more information, see Retrieving a WMI Instance.
You can retrieve the qualifiers on a WMI object in C# by first retrieving the object, and then examining the qualifiers as a collection.
Note
System.Management was the original .NET namespace used to access WMI; however, the APIs in this namespace generally are slower and do not scale as well relative to their more modern Microsoft.Management.Infrastructure counterparts.
To retrieve a qualifier using C# (System.Management)
Retrieve the object whose qualifiers you want to view using ManagementObject.
using System.Management; ... ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
For more information, see Retrieving a WMI Instance.
Place the qualifiers into a QualifierDataCollection, and enumerate through the QualifierData values.
QualifierDataCollection myQualifiers = myDisk.Qualifiers; foreach (QualifierData qd in myQualifiers) { Console.WriteLine(qd.Name + ": " + qd.Value); } Console.ReadLine();
For more information, see Retrieving a WMI Instance.
The following procedure describes how to retrieve a qualifier using VBScript.
To retrieve a qualifier using VBScript
Retrieve the object whose qualifiers you want to view, as shown in the following example:
Set Process = GetObject("winmgmts:Win32_Process")
The most common way to retrieve an object is by using the GetObject method. For more information, see Retrieving a WMI Instance.
Access the qualifiers of the object through the SWbemObject.Qualifiers_ property, as shown in the following example:
for each Qualifier in Process.Qualifiers_ WScript.Echo " " & Qualifier.Name next
The following code example describes how to access all the qualifiers on a Win32_Process object.
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
The following procedure describes how to retrieve a qualifier using C++.
To retrieve a qualifier using C++
Retrieve the object whose qualifiers you want to view.
The most common way to retrieve an object is by using a call to GetObject or GetObjectAsync. For more information, see Retrieving WMI Class or Instance Data.
Retrieve the qualifier set for a given property with a call to IWbemClassObject::GetPropertyQualifierSet or IWbemClassObject::GetMethodQualifierSet methods.
Access the qualifiers of the object through the returned IWbemQualifierSet interface.