Zugreifen auf einen WMI-Qualifizierer
Ein Qualifizierer ist ein Tag, das weitere Informationen zu einem WMI-Objekt, einer Methode oder einer Eigenschaft enthält. Manchmal müssen Sie möglicherweise auf die in einem Qualifizierer gespeicherten Daten zugreifen. Eine häufige Aufgabe besteht beispielsweise darin, zu bestimmen, ob ein Anbieter eine Methode implementiert, indem versucht wird, den Implementierten Qualifizierer für diese Methode abzurufen. Weitere Informationen finden Sie unter WMI-Qualifizierer und Hinzufügen eines Qualifizierers.
Sie können die Qualifizierer für ein WMI-Objekt in PowerShell abrufen, indem Sie zuerst das -Objekt abrufen und dann die Qualifizierer wie jede andere Eigenschaft untersuchen.
So rufen Sie einen Qualifizierer mithilfe von PowerShell ab
Rufen Sie das Objekt ab, dessen Qualifizierer Sie mit Get-WmiObjectanzeigen möchten, und greifen Sie dann über die Qualifizierereigenschaft auf die Qualifizierer zu:
$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 }Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Sie können die Qualifizierer für eine WMI-Instanz in C# abrufen, indem Sie zuerst das -Objekt abrufen und dann die Qualifizierer als Auflistung untersuchen.
So rufen Sie einen Qualifizierer mit C# ab (Microsoft.System.Management)
Rufen Sie die Klasse ab, deren Qualifizierer Sie anzeigen möchten, indem Sie ein CimInstance-Objekt mit dem angegebenen Klassennamen und Namespace erstellen.
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);Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Sie können die Klassenqualifizierer aus den CimInstance.CimClass.CimClassQualifiers,die Eigenschaftenqualifizierer aus CimInstance.CimClass.CimClassPropertiesund die Methodenqualifizierer aus CimInstance.CimClass.CimClassMethods abrufen.
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()); } }Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Sie können die Qualifizierer für ein WMI-Objekt in C# abrufen, indem Sie zuerst das -Objekt abrufen und dann die Qualifizierer als Auflistung untersuchen.
Hinweis
System.Management war der ursprüngliche .NET-Namespace, der für den Zugriff auf WMI verwendet wurde. Die APIs in diesem Namespace sind jedoch im Allgemeinen langsamer und werden im Vergleich zu ihren moderneren Entsprechungen von Microsoft.Management.Infrastructure nicht so gut skaliert.
So rufen Sie einen Qualifizierer mit C# ab (System.Management)
Rufen Sie das Objekt ab, dessen Qualifizierer Sie mit ManagementObject anzeigen möchten.
using System.Management; ... ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Platzieren Sie die Qualifizierer in eine QualifierDataCollection,und enumerieren Sie die QualifierData-Werte.
QualifierDataCollection myQualifiers = myDisk.Qualifiers; foreach (QualifierData qd in myQualifiers) { Console.WriteLine(qd.Name + ": " + qd.Value); } Console.ReadLine();Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Im folgenden Verfahren wird beschrieben, wie Ein Qualifizierer mit VBScript abgerufen wird.
So rufen Sie einen Qualifizierer mit VBScript ab
Rufen Sie das Objekt ab, dessen Qualifizierer Sie anzeigen möchten, wie im folgenden Beispiel gezeigt:
Set Process = GetObject("winmgmts:Win32_Process")Die gängigste Methode zum Abrufen eines Objekts ist die Verwendung der GetObject-Methode. Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.
Greifen Sie über die Eigenschaft SWbemObject.Qualifiers _ auf die Qualifizierer des Objekts zu, wie im folgenden Beispiel gezeigt:
for each Qualifier in Process.Qualifiers_ WScript.Echo " " & Qualifier.Name next
Im folgenden Codebeispiel wird beschrieben, wie sie auf alle Qualifizierer eines Win32 _ Process-Objekts zugreifen.
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
Im folgenden Verfahren wird beschrieben, wie Ein Qualifizierer mithilfe von C++ abgerufen wird.
So rufen Sie einen Qualifizierer mit C++ ab
Rufen Sie das Objekt ab, dessen Qualifizierer Sie anzeigen möchten.
Die gängigste Methode zum Abrufen eines Objekts ist die Verwendung eines Aufrufs von GetObject oder GetObjectAsync. Weitere Informationen finden Sie unter Abrufen von WMI-Klassen- oder Instanzdaten.
Rufen Sie den Für eine bestimmte Eigenschaft festgelegten Qualifizierer mit einem Aufruf der Methoden IWbemClassObject::GetPropertyQualifierSet oder IWbemClassObject::GetMethodQualifierSet ab.
Greifen Sie über die zurückgegebene IWbemQualifierSet-Schnittstelle auf die Qualifizierer des Objekts zu.
Beispiele
Weitere Informationen zum Abrufen von Qualifizierern finden Sie im PowerShell-Codebeispiel Get-WmiClassMethodsAndWritableWmiProperties im TechNet-Katalog.