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

PowerShell计算对象属性乘积时如何校验属性存在并设默认值

PowerShell 多属性乘积累计求和(兼容属性缺失场景)

原有代码直接访问$_.B.Count,当对象不存在B属性时会返回空值,调用Count成员会出现非预期结果或报错,无法满足B属性缺失时用1参与计算的要求。

全版本兼容实现(支持PowerShell 5.1及以上所有正式版本)

$sum = ( $arrOfObjects | ForEach-Object {
    # 校验B属性是否存在,不存在则乘数取1
    $bMultiplier = if ($_.PSObject.Properties['B']) {
        $_.B.Count
    } else {
        1
    }
    $_.A * $bMultiplier * $_.C.Count
} | Measure-Object -Sum).Sum

逻辑说明

  • 属性存在性校验通过$_.PSObject.Properties['B']实现:这是PowerShell判断对象是否携带指定属性的标准方法,属性存在时返回属性元数据对象(布尔判定为真),属性不存在时返回$null(布尔判定为假),不会触发属性不存在的异常。
  • 如果需要额外兼容「B属性存在但值为$null」的边缘场景,可以将判断条件替换为$null -ne $_.B,此时无论B属性不存在、还是B属性值为null,都会使用1作为乘数,避免空值调用Count的报错。
  • 如果运行环境为PowerShell 7及以上版本,可以用三元运算符简化遍历块内的写法:
# PowerShell 7+ 简化版本
$sum = ( $arrOfObjects | ForEach-Object {
    $_.A * ($_.PSObject.Properties['B'] ? $_.B.Count : 1) * $_.C.Count
} | Measure-Object -Sum).Sum

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:03:29