检索 WMI 实例

检索实例是可能在 WMI 中执行的最常见的检索过程之一。 可以检索现有实例,也可以创建新的未命名实例。 现有实例的 WMI 路径是必需的参数。 有关详细信息,请参阅 描述 WMI 对象的位置

备注

提供实例时,提供程序可能无法为某些属性提供值。 除非属性说明中另有说明,否则不能从空值推断任何含义。 这不会与具有 NULL 值的字符串混淆。 在这种情况下,将填充值。 它是空的,但具有一个值: NULL

通过调用 PowerShell get-wmiobject cmdlet 来检索实例的本地副本。

使用 PowerShell 检索 WMI 类的实例

  • 您可以使用类和 -filter 参数检索特定 实例。

    Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
    

您可以使用 c # 来检索 WMI 实例,方法是使用 CimInstance创建一个搜索对象,然后用相关的键值填充该对象,然后使用 CimSession 调用搜索该对象。

使用 c # () 检索 WMI 类的实例

  1. 使用 CimInstance命名空间,使用相关的类名和命名空间创建一个新的对象。

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "Win32_LogicalDisk";
    
    CimInstance myDrive = new CimInstance(className, Namespace);
    
  2. 创建一个 CimProperty ,其中包含要搜索的实例的键属性的名称和值,并将该属性添加到类对象。

    myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
  3. 使用 CimSession 调用从 WMI 中检索对象。

    CimSession mySession = CimSession.Create("localhost");
    CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
    

您可以使用 系统管理 命名空间中的类来检索特定的 wmi 类实例或 wmi 类实例的集合。

备注

System.web 是用于访问 WMI 的原始 .net 命名空间;但是,此命名空间中的 Api 的速度通常较慢,并且相对于 更现代的

使用 c # (System.web) 检索 WMI 类的实例

  1. 检索特定实例的本地副本,方法是创建一个新的 system.management.managementobject,其中包含通过 ManagementPath 参数传入的名称和特定的实例值。 然后,可以通过显式调用 system.management.managementobject来检索实例数据。

    using System.Management;
    ...
    ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    objInst.Get();
    
  2. 或者,您可以通过使用 ManagementObjectSearcher搜索 WMI 类的所有实例,然后通过返回的 ManagementObjectCollection进行枚举来检索这些实例。

    using System.Management;
    ...
    ManagementObjectSearcher mgmtObjSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
    ManagementObjectCollection colDisks = mgmtObjSearcher.Get();
    
    foreach (ManagementObject objDisk in colDisks)
    {
       Console.WriteLine("Device ID : {0}", objDisk["DeviceID"]);
    }
    
    Console.ReadLine();
    

    通过访问实例,可以隐式调用 Get 方法。 有关详细信息,请参阅 检索 WMI 实例的部分

通过调用 VBScript GetObject 方法检索实例的本地副本。

使用 VBScript 检索 WMI 类的实例

  • 用实例的对象路径调用 GetObject ,如下面的示例中所示。

    Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
    

    检索特定实例时,需要提供名称作为对象路径的一部分。

在 c + + 中,调用 IWbemServices:: GetObject

使用 c + + 检索 WMI 类的实例

示例

若要使 VBScript 示例用作模板来检索类和实例信息,请参阅 TechNet 库中的 WMI 模板脚本 示例。 此特定示例使用 GetObject 检索 WMI 服务。