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

PowerShell获取HashSet比对后对应Hashtable键值的方法求助

解决方法

你可以直接遍历$remotefilehash的键值对集合,筛选时判断key不在本地哈希集中,同时保留完整的键值信息即可,有两种常用实现方式:

方式1:输出自定义对象同时保留键和值

$diffItems = $remotefilehash.GetEnumerator().Where({
    -not $localHashSet.Contains($_.Key)
}) | Select-Object Key,Value
  • 这里调用哈希表的GetEnumerator()方法获取所有键值对枚举
  • 筛选后得到的$diffItems每个元素都包含Key(匹配到的差异哈希key)和Value(对应的值)属性
  • 如果你需要直接得到新的差异哈希表,可以改成下面的写法

方式2:直接生成新的差异哈希表

$diffHash = @{}
foreach ($key in $remotefilehash.Keys) {
    if (-not $localHashSet.Contains($key)) {
        $diffHash[$key] = $remotefilehash[$key]
    }
}
  • 生成的$diffHash就是仅包含本地不存在的key的完整哈希表,你可以直接通过key索引读取对应的值,也可以遍历获取所有键值对

补充说明

如果你已经提前拿到了$diffmd5的key集合,也可以直接遍历这个集合去取对应的值:

$diffWithValue = $diffmd5 | ForEach-Object {
    [PSCustomObject]@{
        HashKey = $_
        HashValue = $remotefilehash[$_]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:36:03