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
相关产品推荐
相关产品推荐

