微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Diff 哈希表返回值

如何解决Diff 哈希表返回值

我正在做一个比较对象,其中我的 ref 对象是一个字符串列表,而 diff 对象是一个哈希表

Compare-Object -ReferenceObject $localmd5 -DifferenceObject $remotefilehash | Where-Object { ($_.SideIndicator -eq '=>')} 

辅助指标为我提供了所有我感兴趣的指标,但我想要的是返回的哈希表中的值 - 我该怎么做?

更新 1

询问 - 我需要将 localmd5 与哈希表 KEYS 进行比较并返回值

解决方法

为什么不直接将 HashTable 值转换为字符串数组,然后将它们进行比较?

  1. 将存储在 HashTable 中的值转换为字符串数组:

    $hashTableValues = $remotefilehash.Values.ForEach('ToString')

  2. 然后,只需比较两个字符串数组($localmd5$hashTableValues)并使用 Select-Object cmdlet 获取您的唯一值:

    Compare-Object -ReferenceObject $localmd5 -DifferenceObject $hashTableValues | Where-Object { ($_.SideIndicator -eq '=>')} | Select-Object InputObject

根据您更新的问题:

您可以通过执行以下操作来获取您感兴趣的密钥:

$requiredKeys = Compare-Object -ReferenceObject $localmd5 -DifferenceObject ($remotefilehash.Keys.GetEnumerator() -join ',').Split(' ') | Where-Object { ($_.SideIndicator -eq '=>')} | Select-Object InputObject

然后,您可以将这些键转换为字符串数组:

$keysAsString = $requiredKeys | Foreach {"$($_.InputObject)"}

现在,由于您已经获得了需要值的键列表,您可以将这些键用作索引并从 HashTable 中获取所需的值:

foreach($key in $keysAsString)
{
    foreach($hKey in $remotefilehash.Keys)
    {
        if($hKey.ToString() -eq $key)
        {
            Write-Output $hash[$hKey] #use the value accordingly
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。