Udostępnij przez


Uzyskiwanie dostępu do kwalifikatora WMI

Kwalifikator to tag, który zawiera więcej informacji o obiekcie, metodzie lub właściwości WMI. Czasami może być konieczne uzyskanie dostępu do danych przechowywanych w kwalifikatorze. Na przykład typowym zadaniem jest określenie, czy dostawca implementuje metodę, poprzez próbę pobrania kwalifikatora Implemented dla tej metody. Aby uzyskać więcej informacji, zobacz Kwalifikatory WMI oraz Dodawanie kwalifikatora .

Kwalifikatory można pobrać w obiekcie WMI w programie PowerShell, pobierając najpierw obiekt, a następnie sprawdzając kwalifikatory tak, jak w przypadku każdej innej właściwości.

Aby pobrać kwalifikator z użyciem programu PowerShell

  • Pobierz obiekt, którego kwalifikatory chcesz wyświetlić, używając Get-WmiObject, a następnie uzyskaj dostęp do nich za pomocą właściwości 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 }
    

    Aby uzyskać więcej informacji, zobacz Pobieranie instancji WMI.

Kwalifikatory można pobrać w wystąpieniu usługi WMI w języku C#, pobierając najpierw obiekt, a następnie sprawdzając kwalifikatory jako kolekcję.

Aby pobrać kwalifikator przy użyciu języka C# (Microsoft.System.Management)

  1. Pobierz klasę, której kwalifikatory chcesz wyświetlić, tworząc obiekt CimInstance przy użyciu określonej nazwy klasy i przestrzeni nazw.

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

    Aby uzyskać więcej informacji, zobacz Pobieranie wystąpienia WMI.

  2. Kwalifikatory klasy można pobrać z CimInstance.CimClass.CimClassQualifiers, kwalifikatory właściwości można pobrać z CimInstance.CimClass.CimClassProperties, a kwalifikatory metod można pobrać z 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());
       }
    }
    

    Więcej informacji znajdziesz w Pobieranie wystąpienia usługi WMI.

Kwalifikatory można uzyskać w obiekcie WMI w języku C#, najpierw pobierając obiekt, a następnie przeglądając kwalifikatory jako kolekcję.

Notatka

System.Management była oryginalną przestrzenią nazw platformy .NET używaną do uzyskiwania dostępu do usługi WMI; jednak interfejsy API w tej przestrzeni nazw są ogólnie wolniejsze i nie są skalowane w porównaniu z ich bardziej nowoczesnymi Microsoft.Management.Infrastructure odpowiednikami.

 

Aby pobrać kwalifikator przy użyciu języka C# (System.Management)

  1. Pobierz obiekt, którego kwalifikatory chcesz wyświetlić przy użyciu ManagementObject.

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

    Aby uzyskać więcej informacji, przejrzyj Pobieranie wystąpienia usługi WMI.

  2. Umieść kwalifikatory w kolekcji danych kwalifikatorówi wyliczaj wartości danych kwalifikatorów.

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

    Aby uzyskać szczegółowe informacje, zobacz sekcję Pobieranie wystąpienia usługi WMI.

Poniższa procedura opisuje sposób pobierania kwalifikatora przy użyciu języka VBScript.

Aby pobrać kwalifikator za pomocą VBScript

  1. Pobierz obiekt, którego kwalifikatory chcesz wyświetlić, jak pokazano w poniższym przykładzie:

    Set Process = GetObject("winmgmts:Win32_Process")
    

    Najczęstszym sposobem pobierania obiektu jest użycie metody GetObject. Więcej informacji znajdziesz w Pobieranie wystąpienia WMI.

  2. Uzyskaj dostęp do kwalifikatorów obiektu za pośrednictwem właściwości SWbemObject.Qualifiers_, jak pokazano w poniższym przykładzie:

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

W poniższym przykładzie kodu opisano sposób uzyskiwania dostępu do wszystkich kwalifikatorów w obiekcie 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

Poniższa procedura opisuje sposób pobierania kwalifikatora przy użyciu języka C++.

Aby pobrać kwalifikator przy użyciu języka C++

  1. Pobierz obiekt, którego kwalifikatory chcesz wyświetlić.

    Najczęstszym sposobem pobierania obiektu jest użycie wywołania metody GetObject lub GetObjectAsync. Aby uzyskać więcej informacji, zobacz Pobieranie klasy WMI lub danych wystąpienia.

  2. Pobierz zestaw kwalifikatorów dla danej właściwości, wywołując metodę IWbemClassObject::GetPropertyQualifierSet lub IWbemClassObject::GetMethodQualifierSet.

  3. Uzyskaj dostęp do kwalifikatorów obiektu za pośrednictwem zwróconego interfejsu IWbemQualifierSet.