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

PowerShell 将数组元素添加至另一数组时提示无op_Addition方法如何解决

报错根因

你没有提前声明$ClientNotHRSeparated和$ClientHRSeparated为数组类型,第一次执行+=赋值时,PowerShell会自动将变量类型判定为和右值一致的PSObject类型,后续再次执行+=操作时,PSObject对象没有对应的加法运算符实现,就会抛出该错误。

解决方案

方案1:提前初始化数组(兼容原有循环写法)

在循环执行前先声明两个空数组即可:

$JsonDB = Get-Content 'Q:\Technology\1AA\HardwareCollection.json' | Out-String | ConvertFrom-Json
# 提前初始化空数组
$ClientNotHRSeparated = @()
$ClientHRSeparated = @()
foreach($client in $JsonDB)
{
    if($client.HRSeparation -eq "No")
    {
        $ClientNotHRSeparated += $client
    }
    else
    {
        $ClientHRSeparated += $client
    }
}
$JsonDB

注意:数组+=操作每次都会创建新数组并拷贝所有原有元素,数据量较大时性能较低,更推荐下面的原生筛选写法。如果你的JSON文件根节点是单个对象而非数组,可在转换时用@()包裹强制转为数组,避免遍历逻辑异常:$JsonDB = @(Get-Content 'Q:\Technology\1AA\HardwareCollection.json' | Out-String | ConvertFrom-Json)

方案2:使用PowerShell原生筛选(更高效简洁)

不需要手动写循环,直接用Where-Object筛选即可,PowerShell会自动返回数组类型:

$JsonDB = Get-Content 'Q:\Technology\1AA\HardwareCollection.json' | Out-String | ConvertFrom-Json
$ClientNotHRSeparated = $JsonDB | Where-Object { $_.HRSeparation -eq "No" }
$ClientHRSeparated = $JsonDB | Where-Object { $_.HRSeparation -ne "No" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:36:03