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

C#调用PowerShell获取CPU使用率时LoadPercentage未识别问题求助

错误根因

你代码中的写法是把LoadPercentage当成独立的PowerShell命令添加,而实际上LoadPercentage是Get-CimInstance Win32_Processor返回的WMI对象的属性,不是可执行的cmdlet,所以触发了命令不存在的异常。

正确实现方式

有两种常用的实现方案:

方案1:通过管道命令取属性

对应PowerShell的管道用法Get-CimInstance Win32_Processor | Select-Object LoadPercentage,C#代码如下:

// 先清空之前可能残留的命令,避免叠加执行
powerShell.Commands.Clear();
var result = powerShell
    .AddCommand("Get-CimInstance")
    .AddArgument("Win32_Processor")
    .AddCommand("Select-Object")
    .AddArgument("LoadPercentage")
    .Invoke();

// 读取结果
if (result.Count > 0)
{
    var cpuLoad = result[0].Properties["LoadPercentage"].Value;
    // 输出或处理cpuLoad即可,多核心CPU会返回对应核心的使用率
}

方案2:直接执行完整PowerShell脚本

直接把你要执行的完整语句通过AddScript传入,写法更简单不容易出错:

powerShell.Commands.Clear();
var result = powerShell
    .AddScript("(Get-CimInstance Win32_Processor).LoadPercentage")
    .Invoke();

// 读取结果
if (result.Count > 0)
{
    var cpuLoad = result[0].BaseObject;
    // 直接拿到数值类型的使用率结果
}

注意事项

如果设备是多核心CPU,Get-CimInstance Win32_Processor会返回每个逻辑核心的使用率对象,如果你需要整机平均使用率,可以遍历结果累加后除以核心数计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:15:05