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

PowerShell定义pscustomobject报hash literal缺失=运算符错误如何解决

错误根因

你遇到的报错是因为直接将if/else控制流语句写在了哈希字面量@{}的定义范围内,PowerShell 的哈希表字面量语法只允许在花括号内书写键名 = 键值格式的键值对,不支持直接嵌入控制流语句。
此外你的代码还有3处额外问题:

  • if (key -like 'CBT99*') 中的key没有加变量引用符,实际应该引用当前遍历对象的key属性,即$_.key
  • 写了elseif但没有跟上判断条件,按照逻辑应为无额外条件的else分支
  • if分支内定义的键名为bo,else分支内定义的键名为boperator,属于笔误,同一对象的属性名应保持统一

修正后代码

$Nests | ForEach-Object {
    # 先在哈希表外完成分支逻辑计算
    if ($_.key -like 'CBT99*') {
        $boperator = 'CBT'
        $SiteID = 1972
    } else {
        # 提前提取公共前缀,避免重复计算
        $keyPrefix = $_.key.TrimEnd("0123456789-")
        $boperator = $map[$keyPrefix].boperator
        $SiteID = $map[$keyPrefix].SiteID
    }
    # 所有属性值确定后再构造自定义对象
    $RecordMetrics = [pscustomobject]@{
        key = $_.key
        count = $_.doc_count
        boperator = $boperator
        SiteID = $SiteID
    }
    # 此处可补充你对$RecordMetrics的后续处理逻辑,例如存入集合、输出等
}

如果你的业务逻辑确实需要if分支对应bo属性、else分支对应boperator属性,只需要调整分支内的变量名、并在自定义对象中补充对应的属性定义即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:15:00