Accesso a un qualificatore WMI

Un qualificatore è un tag che fornisce altre informazioni su un oggetto WMI, un metodo o una proprietà. A volte, potrebbe essere necessario accedere ai dati archiviati in un qualificatore. Ad esempio, un'attività comune consiste nel determinare se un provider implementa un metodo tentando di recuperare il qualificatore Implementato per tale metodo. Per altre informazioni, vedere Qualificatori WMI e Aggiunta di un qualificatore.

È possibile recuperare i qualificatori in un oggetto WMI in PowerShell recuperando prima l'oggetto e quindi esaminando i qualificatori come qualsiasi altra proprietà.

Per recuperare un qualificatore tramite PowerShell

È possibile recuperare i qualificatori in un'istanza WMI in C# recuperando prima l'oggetto e quindi esaminando i qualificatori come raccolta.

Per recuperare un qualificatore usando C# (Microsoft.System.Management)

  1. Recuperare la classe i cui qualificatori si desidera visualizzare creando un oggetto CimInstance usando il nome e lo spazio dei nomi della classe specificati.

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

    Per altre informazioni, vedere Recupero di un'istanza WMI.

  2. È possibile recuperare i qualificatori di classe da CimInstance.CimClass.CimClassQualifiers, i qualificatori di proprietà da CimInstance.CimClass.CimClassProperties e i qualificatori di metodo da 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());
       }
    }
    

    Per altre informazioni, vedere Recupero di un'istanza WMI.

È possibile recuperare i qualificatori in un oggetto WMI in C# recuperando prima l'oggetto e quindi esaminando i qualificatori come raccolta.

Nota

System.Management era lo spazio dei nomi .NET originale usato per accedere a WMI. Tuttavia, le API in questo spazio dei nomi sono in genere più lente e non vengono ridimensionate anche rispetto alle controparti Microsoft.Management.Infrastructure più moderne.

 

Per recuperare un qualificatore usando C# (System.Management)

  1. Recuperare l'oggetto i cui qualificatori si desidera visualizzare tramite ManagementObject.

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

    Per altre informazioni, vedere Recupero di un'istanza WMI.

  2. Inserire i qualificatori in un Oggetto QualifierDataCollection ed enumerare i valori QualifierData .

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

    Per altre informazioni, vedere Recupero di un'istanza WMI.

La procedura seguente descrive come recuperare un qualificatore usando VBScript.

Per recuperare un qualificatore tramite VBScript

  1. Recuperare l'oggetto i cui qualificatori si desidera visualizzare, come illustrato nell'esempio seguente:

    Set Process = GetObject("winmgmts:Win32_Process")
    

    Il modo più comune per recuperare un oggetto consiste nell'usare il metodo GetObject . Per altre informazioni, vedere Recupero di un'istanza WMI.

  2. Accedere ai qualificatori dell'oggetto tramite la proprietà SWbemObject.Qualifiers_ , come illustrato nell'esempio seguente:

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

Nell'esempio di codice seguente viene descritto come accedere a tutti i qualificatori in un oggetto 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

La procedura seguente descrive come recuperare un qualificatore usando C++.

Per recuperare un qualificatore con C++

  1. Recuperare l'oggetto i cui qualificatori si desidera visualizzare.

    Il modo più comune per recuperare un oggetto consiste nell'usare una chiamata a GetObject o GetObjectAsync. Per altre informazioni, vedere Recupero di dati della classe WMI o dell'istanza.

  2. Recuperare il qualificatore impostato per una determinata proprietà con una chiamata ai metodi IWbemClassObject::GetPropertyQualifierSet o IWbemClassObject::GetMethodQualifierSet.

  3. Accedere ai qualificatori dell'oggetto tramite l'interfaccia IWbemQualifierSet restituita.