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

PowerShell对象合并:用非空值补全$null字段的实现方法

PowerShell 哈希表合并:用非空值填充null字段

需求明确:合并两个哈希表,优先保留$tag1的字段值,仅当$tag1对应字段值为$null时,用$tag2的对应值填充。

示例输入

$tag1=@{'Artist'='Madonna';`
        'Title'='Like a Prayer';`
        'Genre'=$null; }

$tag2=@{'Artist'='Madonna';`
        'Title'='Like a Prayer (single version)';`
        'Genre'='Pop'; }

解决方案:基础遍历法(直观易理解)

先克隆$tag1得到初始结果,确保$tag1的非空值全部保留,再遍历$tag2的键,填充$tag1中为$null的字段:

# 克隆$tag1作为输出的初始值
$output = $tag1.Clone()

# 遍历$tag2的所有键
foreach ($key in $tag2.Keys) {
    # 仅当输出中该键的值为null时,用$tag2的值替换
    if ($output[$key] -eq $null) {
        $output[$key] = $tag2[$key]
    }
}

验证结果

运行上述代码后,$output的内容与预期一致:

$output=@{'Artist'='Madonna';`
          'Title'='Like a Prayer';`
          'Genre'='Pop'; }

补充:兼容$tag2新增字段的场景

如果需要同时将$tag2中$tag1没有的字段也加入结果,只需修改判断逻辑:

$output = $tag1.Clone()

foreach ($key in $tag2.Keys) {
    # 若输出中无此键,或该键值为null,则使用$tag2的值
    if (-not $output.ContainsKey($key) -or $output[$key] -eq $null) {
        $output[$key] = $tag2[$key]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:50:42