如何解决Diff 哈希表返回值
我正在做一个比较对象,其中我的 ref 对象是一个字符串列表,而 diff 对象是一个哈希表
Compare-Object -ReferenceObject $localmd5 -DifferenceObject $remotefilehash | Where-Object { ($_.SideIndicator -eq '=>')}
辅助指标为我提供了所有我感兴趣的指标,但我想要的是返回的哈希表中的值 - 我该怎么做?
更新 1:
询问 - 我需要将 localmd5 与哈希表 KEYS 进行比较并返回值
解决方法
为什么不直接将 HashTable 值转换为字符串数组,然后将它们进行比较?
-
将存储在 HashTable 中的值转换为字符串数组:
$hashTableValues = $remotefilehash.Values.ForEach('ToString')
-
然后,只需比较两个字符串数组(
$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 举报,一经查实,本站将立刻删除。