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

C#中PowerShell Runspace调用Get-WmiObject无输出问题及解决

问题与解决方案

问题描述

在Windows Form的C#代码中,尝试通过PowerShell Runspace执行Get-WmiObject -Class Win32_Volume命令获取卷信息,但Runspace返回空结果。该命令直接在PowerShell中执行可正常输出,且Runspace执行ipconfig时工作正常,说明Runspace本身无问题。

尝试过的无效方法

  • 使用AddScript添加Get-WmiObject -Class Win32_Volume | select Name, SerialNumber脚本,结果为空;
  • 使用AddCommand("get-wmiobject").AddParameter("Class", "Win32_Volume"),报错:The term 'get-wmiobject' is not recognized as a name of a cmdlet, function, script file, or executable program.;
  • 通过ManagementObjectSearcher查询Win32_DiskDrive获取序列号,无输出;

解决方案

将ManagementObjectSearcher的查询类改为Win32_Volume,并添加过滤条件,只显示带盘符且非启动卷的驱动器信息,代码如下:

ManagementObjectSearcher mgmtObjSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Volume");
ManagementObjectCollection colDisks = mgmtObjSearcher.Get();

foreach (ManagementObject objDisk in colDisks)
{
    if (objDisk["Name"].ToString().ToLower().Contains("volume") == false && objDisk["BootVolume"].ToString().ToLower() == "false")
    {
        MessageBox.Show("Name: " + objDisk["Name"].ToString() + "\nSerial: " + objDisk["SerialNumber"].ToString());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:15:43