PowerShell电池容量计算报错:System.Object[]无op_Division方法
解决PowerShell中电池容量除法运算的数组类型错误
问题原因
你遇到的错误是因为$r和$d是数组类型(System.Object[]),而非单个数值类型。哪怕单独输出时看起来是单个值,实际是包含单个元素的数组,PowerShell无法直接对数组执行除法运算。
解决方案步骤
1. 验证变量类型
先执行以下命令确认变量类型:
$r.GetType().FullName $d.GetType().FullName
输出会显示System.Object[],证明变量是数组。
2. 提取数组中的单个数值
直接取数组的第一个元素(适配单电池系统):
$r = $r[0] $d = $d[0]
3. 从根源避免数组问题(推荐)
在获取电池容量时,直接获取单个对象的属性,而非返回整个集合的属性数组。示例代码:
# 获取第一个电池对象(适配单电池场景) $battery = Get-CimInstance -ClassName Win32_Battery | Select-Object -First 1 # 直接获取单个数值类型的容量值 $remaining = $battery.RemainingCapacity $designed = $battery.DesignedCapacity # 计算占比并格式化输出 $ratio = ($remaining / $designed) * 100 Write-Host "电池剩余容量占比:$([math]::Round($ratio, 2))%"
4. 执行除法运算
修正变量类型后,再执行$remaining / $designed即可正常计算,得到的小数乘以100就是百分比占比。
内容的提问来源于stack exchange,提问作者Xeryn
相关产品推荐
相关产品推荐

