You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中正确实现指定WMI查询?

正确实现PowerShell WMI查询对应的C#代码

你的C#代码抛出"Invalid query"异常的核心原因是误用了meta_class——这个WQL语句用于查询WMI类的元数据信息,而非目标类的实例。而你要实现的是和PowerShell中Get-WMIObject等价的功能,即直接查询MDM_DevDetail_Ext01类的实例并应用过滤条件。

正确的C#实现代码

using System.Management;

// 初始化WMI命名空间范围
ManagementScope scope = new ManagementScope(@"\\localhost\root\cimv2\mdm\dmmap");
scope.Connect();

// 构造正确的WQL查询:直接从目标类查询,带上过滤条件
ObjectQuery query = new ObjectQuery(
    "SELECT * FROM MDM_DevDetail_Ext01 WHERE InstanceID='Ext' AND ParentID='./DevDetail'"
);

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
using (ManagementObjectCollection results = searcher.Get())
{
    foreach (ManagementObject obj in results)
    {
        // 处理查询到的实例数据,示例:输出属性值
        Console.WriteLine($"Device ID: {obj["DeviceID"]}");
        // 根据业务需求访问其他属性
    }
}

关键说明

  • 移除meta_class相关逻辑,直接指定目标类MDM_DevDetail_Ext01作为查询源
  • 过滤条件和PowerShell的Filter参数保持一致,直接写入WQL的WHERE子句
  • 新增ManagementObjectCollection的using块,确保资源被正确释放
  • 可根据实际需求遍历查询结果,访问实例的对应属性

内容的提问来源于stack exchange,提问作者Duncan Groenewald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:35:21