Zugreifen auf einen WMI-Qualifizierer

Ein Qualifizierer ist ein Tag, das weitere Informationen zu einem WMI-Objekt, einer WMI-Methode oder WMI-Eigenschaft bereitstellt. Mitunter müssen Sie möglicherweise auf die in einem Qualifizierer gespeicherten Daten zugreifen. Eine gängige Aufgabe besteht beispielsweise darin zu ermitteln, ob ein Anbieter eine Methode implementiert, indem versucht wird, den Implemented-Qualifizierer für diese Methode abzurufen. Weitere Informationen finden Sie unter WMI-Qualifizierer und Hinzufügen eines Qualifizierers.

Sie können in PowerShell die Qualifizierer für ein WMI-Objekt abrufen, indem Sie zuerst das Objekt abrufen und dann die Qualifizierer wie jede andere Eigenschaft untersuchen.

So rufen Sie einen Qualifizierer mit PowerShell ab

  • Rufen Sie das Objekt ab, dessen Qualifizierer Sie mit Get-WmiObject anzeigen möchten, und greifen Sie dann über die Qualifiers-Eigenschaft 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 in C# die Qualifizierer für eine WMI-Instanz 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)

  1. 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.

  2. Sie können die Klassenqualifizierer aus cimInstance.CimClass.CimClassQualifiers, die Eigenschaftsqualifizierer aus CimInstance.CimClass.CimClassProperties und 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 in C# die Qualifizierer für ein WMI-Objekt 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 können im Vergleich zu ihren moderneren Microsoft.Management.Infrastructure-Entsprechungen nicht so gut skaliert werden.

 

So rufen Sie einen Qualifizierer mit C# ab (System.Management)

  1. Rufen Sie das Objekt ab, dessen Qualifizierer Sie mithilfe von ManagementObject anzeigen möchten.

    using System.Management;
    ...
    ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    

    Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.

  2. Platzieren Sie die Qualifizierer in einer QualifierDataCollection, und zählen Sie die QualifierData-Werte durch.

    
    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 Sie einen Qualifizierer mithilfe von VBScript abrufen.

So rufen Sie einen Qualifizierer mit VBScript ab

  1. 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 Möglichkeit zum Abrufen eines Objekts ist die GetObject-Methode. Weitere Informationen finden Sie unter Abrufen einer WMI-Instanz.

  2. Greifen Sie auf die Qualifizierer des Objekts über die SWbemObject.Qualifiers_-Eigenschaft 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 für ein Win32_Process-Objekt 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 Sie einen Qualifizierer mithilfe von C++ abrufen.

So rufen Sie einen Qualifizierer mit C++ ab

  1. Rufen Sie das Objekt ab, dessen Qualifizierer Sie anzeigen möchten.

    Die gängigste Möglichkeit zum Abrufen eines Objekts ist das Richten eines Aufrufs an GetObject oder GetObjectAsync. Weitere Informationen finden Sie unter Abrufen von WMI-Klassen- oder Instanzdaten.

  2. Rufen Sie den Qualifizierersatz für eine bestimmte Eigenschaft mithilfe eines Aufrufs der Methode IWbemClassObject::GetPropertyQualifierSet oder IWbemClassObject::GetMethodQualifierSet ab.

  3. Greifen Sie über die zurückgegebene IWbemQualifierSet-Schnittstelle auf die Qualifizierer des Objekts zu.