powershell - 将两个哈希表连接成一个

标签 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

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

我该如何解决?

我已经尝试过:
$User.GetEnumerator() | select Key, @{n='Value'; e={$Profil[$_.Value]}}


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

任何的想法?

最佳答案

使用这个表达

$User.GetEnumerator() | Select-Object Key, @{name='Value'; expression={($_.Value -split ", " | Foreach-Object {$Profil[$_]}) -join ", "}}

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

关于powershell - 将两个哈希表连接成一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539849/

相关文章:

arrays - Powershell 中的@() 和@{} 之间有什么区别以及何时使用它们?

regex - 从查找表中捕获要替换的正则表达式匹配项

html - Firefox 3 vs Firefox 4 开发差异?

java - 同时比较字符串 AND 和 OR

c - c中哈希表的查找函数?

java - 在HashTable中查找Key的方法

oracle - 通过 Powershell 向 Oracle 数据库插入数据时,为什么锐音符号会与其基本字母分开?

powershell - 使用 Powershell 和 AzureResourceManager 模式创建 SQL Azure Server

powershell - 如何正确检查进程是否正在运行并停止它

JavaScript 无法正确比较两个字符串