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

PowerShell脚本报错:[System.Object[]]不含'op_Division'方法求解

问题原因与解决方法

报错根源

报错[System.Object[]] does not contain a method named 'op_Division'的本质是:$cpu是多个Win32_Processor实例组成的数组,当直接调用$cpu.numberoflogicalprocessors时,PowerShell会返回包含所有处理器核心数的数组(即便每个值都是1),而数组无法直接参与除法运算,导致类型不匹配错误。

解决步骤

需要将数组转换为单个数值后再计算,有两种可行方法:

方法1:取数组首个元素

既然所有处理器的逻辑核心数都是1,直接取第一个实例的核心数即可:

$cpuUsagePercentage = [math]::Round($process.CPU *100 / $ts / $cpu[0].numberoflogicalprocessors, 2)

方法2:计算总核心数

如果后续机器可能存在不同核心数的处理器,更通用的方式是计算所有逻辑处理器的总数:

$totalLogicalCores = ($cpu.numberoflogicalprocessors | Measure-Object -Sum).Sum
$cpuUsagePercentage = [math]::Round($process.CPU *100 / $ts / $totalLogicalCores, 2)

环境差异说明

同是PowerShell 5.1,部分机器正常运行是因为这些机器只有单个Win32_Processor实例(比如单处理器机器),此时$cpu不是数组,直接调用$cpu.numberoflogicalprocessors会返回单个数值,能正常运算;而报错的机器是多处理器(或多核被识别为多个处理器实例),导致$cpu变成数组,触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:03