访问 WMI 限定符

限定符是提供有关 WMI 对象、方法或属性详细信息的标记。 有时,可能需要访问存储在限定符中的数据。 例如,常见任务是通过尝试检索该方法的 Implement 限定符来确定提供程序是否实现方法。 有关详细信息,请参阅WMI 限定符和添加限定符

可以先检索 PowerShell 中的 WMI 对象上的限定符,然后像检查任何其他属性一样检查限定符。

使用 PowerShell 检索限定符

  • 使用 Get-WmiObject检索要查看其限定符的对象,然后通过 Qualifiers 属性访问限定 符:

    PowerShell复制

    $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 }
    

    有关详细信息,请参阅检索 WMI 实例

可以通过先检索 对象,然后作为集合检查限定符,在 C# 中的 WMI 实例上检索限定符。

使用 C# 检索限定符 (Microsoft.System.Management)

  1. 通过使用指定的类名和命名空间创建 CimInstance 对象,检索要查看其限定符的类。

    CSharp复制

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

    有关详细信息,请参阅检索 WMI 实例

  2. 可以从 CimInstance.CimClass.CimClassQualifiers中检索类限定符 、CimInstance.CimClass.CimClassProperties中的属性限定符以及 CimInstance.CimClass.CimClassMethods中的方法限定符。

    CSharp复制

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

    有关详细信息,请参阅检索 WMI 实例

可以先检索 C# 中的 WMI 对象上的限定符,然后作为集合检查限定符。

 备注

System.Management 是用于访问 WMI 的原始 .NET 命名空间;但是,此命名空间中的 API 通常速度较慢,并且相对于其更新式 的 Microsoft.Management.Infrastructure 对应项,其缩放速度也不高。

使用 C# 检索限定符 (System.Management)

  1. 使用 ManagementObject检索要查看其限定符的对象。

    CSharp复制

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

    有关详细信息,请参阅检索 WMI 实例

  2. 将限定符放入 QualifierDataCollection中,并通过 QualifierData 值枚举 。

    CSharp复制

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

    有关详细信息,请参阅检索 WMI 实例

以下过程介绍如何使用 VBScript 检索限定符。

使用 VBScript 检索限定符

  1. 检索要查看其限定符的对象,如以下示例所示:

    VB复制

    Set Process = GetObject("winmgmts:Win32_Process")
    

    检索对象的最常见方法是使用 GetObject 方法。 有关详细信息,请参阅检索 WMI 实例

  2. 通过 SWbemObject.Qualifiers _属性访问 对象的限定符,如以下示例所示:

    VB复制

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

下面的代码示例介绍如何访问 Win32 Process 对象上 _ 的所有限定 符。

VB复制

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

以下过程介绍如何使用 C++ 检索限定符。

使用 C++ 检索限定符

  1. 检索要查看其限定符的对象。

    检索对象的最常见方法为调用 GetObject 或 GetObjectAsync。 有关详细信息,请参阅检索 WMI 类或实例数据

  2. 通过调用 IWbemClassObject::GetPropertyQualifierSet 或 IWbemClassObject::GetMethodQualifierSet 方法检索给定属性的限定符集。

  3. 通过返回的 IWbemQualifierSet 接口访问 对象的限定符。

示例

有关检索限定符的信息,请参阅 TechNet 库中的 Get-WmiClassMethodsAndWritableWmiProperties PowerShell 代码示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值