连接两个哈希表以使一个

时间:2018-07-26 13:18:45

标签: powershell compare hashtable

我有两个哈希表,需要对其进行比较。让我解释一下我的问题:

[hashtable]$User = @{
"Jack" = "AdminLA, AdminUSA";
"John" = "AdminAustralia";
"Sarah" = "AdminIceland";
"Arnold" = "AdminUSA";
"Maurice" = "AdminAustralia, AdminCanada";
}


[hashtable]$Profil = @{
"AdminLA" = "P1";
"AdminIceland" = "P2";
"AdminUSA" = "P3";
"AdminCanada" = "P4";
"AdminAustralia" = "P5" ;
"AdminCroatia" = "P6";
}

我想得到这样的结果:

Key         Value
---         -----
Jack        P1, P3
John        P5
Sarah       P2
Arnold      P3
Maurice       P5, P4

实际上,我只有一个值(我没有成功拥有多个值。例如,杰克必须具有P1和P3,而我只有P1)。

我该如何解决?

我已经尝试过:

$User.GetEnumerator() | select Key, @{n='Value'; e={$Profil[$_.Value]}}

$User.GetEnumerator() | %{[PSCustomObject]@{aKey=$_.Key;bValue=$Profil[$_.Value]}}

有什么主意吗?

1 个答案:

答案 0 :(得分:5)

使用此表达式

$User.GetEnumerator() | select Key, @{n='Value'; e={($_.Value -split ", " | % {$Profil[$_]}) -join ", "}}

这基本上会创建一个输入值数组,从$Profil中获取每个元素的值,然后从这些值中创建一个字符串。