Dela via


Komma åt en WMI-kvalificerare

En kvalificerare är en tagg som innehåller mer information om ett WMI-objekt, en metod eller en egenskap. Ibland kan du behöva komma åt data som lagras i en kvalificerare. En vanlig uppgift är till exempel att avgöra om en provider implementerar en metod genom att försöka hämta kvalificeraren Implementerad för den metoden. För mer information, se WMI-kvalifikatörer och Lägga till en kvalificerare.

Du kan hämta kvalificerarna för ett WMI-objekt i PowerShell genom att först hämta objektet och sedan undersöka kvalificeringarna på samma sätt som andra egenskaper.

Så här hämtar du en kvalificerare med PowerShell

  • Hämta objektet vars kvalificerare du vill visa med hjälp av Get-WmiObjectoch få åtkomst till kvalificerarna via egenskapen 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 }
    

    För mer information, se Hämtning av en WMI-instans.

Du kan hämta kvalificerarna på en WMI-instans i C# genom att först hämta objektet och sedan undersöka kvalificerarna som en samling.

Hämta en kvalificerare med C# (Microsoft.System.Management)

  1. Hämta klassen vars kvalificerare du vill visa genom att skapa ett CimInstance-objekt med det angivna klassnamnet och namnområdet.

    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);
    

    Mer information finns i Hämtning av en WMI-instans.

  2. Du kan hämta klasskvalificerarna från CimInstance.CimClass.CimClassQualifiers, egenskapskvalificerarna från CimInstance.CimClass.CimClassPropertiesoch metodkvalificerarna från 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());
       }
    }
    

    Mer information finns i Hämta en WMI-instans.

Du kan hämta kvalificerarna på ett WMI-objekt i C# genom att först hämta objektet och sedan undersöka kvalificerarna som en samling.

Not

System.Management var det ursprungliga .NET-namnområdet som användes för att komma åt WMI. API:erna i det här namnområdet är dock vanligtvis långsammare och skalas inte lika bra i förhållande till deras modernare Microsoft.Management.Infrastructure motsvarigheter.

 

Hämta en kvalificerare med C# (System.Management)

  1. Hämta objektet vars kvalificerare du vill visa med ManagementObject.

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

    Mer information finns i Hämta en WMI-instans.

  2. Placera kvalificerarna i QualifierDataCollectionoch gå igenom värdena för QualifierData.

    
    QualifierDataCollection myQualifiers = myDisk.Qualifiers;
    foreach (QualifierData qd in myQualifiers)
    {
       Console.WriteLine(qd.Name + ": " + qd.Value);
    }
    Console.ReadLine();
    

    Mer information finns i Hämta en WMI-instans.

Följande procedur beskriver hur du hämtar en kvalificerare med hjälp av VBScript.

Hämta en kvalificerare med VBScript

  1. Hämta objektet vars kvalificerare du vill visa, som du ser i följande exempel:

    Set Process = GetObject("winmgmts:Win32_Process")
    

    Det vanligaste sättet att hämta ett objekt är att använda metoden GetObject. Mer information finns i Hämta en WMI-instans.

  2. Få åtkomst till objektets kvalificerare via egenskapen SWbemObject.Qualifiers_, som du ser i följande exempel:

    for each Qualifier in Process.Qualifiers_
        WScript.Echo " " & Qualifier.Name
    next
    

I följande kodexempel beskrivs hur du kommer åt alla kvalificerare på ett Win32_Process objekt.

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

Följande procedur beskriver hur du hämtar en kvalificerare med hjälp av C++.

Hämta en kvalificerare med C++

  1. Hämta objektet vars kvalificerare du vill visa.

    Det vanligaste sättet att hämta ett objekt är att använda ett anrop till GetObject eller GetObjectAsync. För mer information, se Hämta WMI-klass eller instansdata.

  2. Hämta kvalificeringsuppsättningen för en viss egenskap med ett anrop till IWbemClassObject::GetPropertyQualifierSet eller IWbemClassObject::GetMethodQualifierSet metod.

  3. Få åtkomst till objektets kvalificerare via det returnerade IWbemQualifierSet-gränssnittet.