使用变量键的 Powershell 哈希表值

Ada*_*dam 6 variables powershell hashtable key

我试图让用户做出选择,然后根据该选择从哈希表返回一个值。

我的哈希表如下所示:

$choices = @{ 0 = "SelectionA"; 
              1 = "SelectionB"; 
              99 = "SelectionC"}
Run Code Online (Sandbox Code Playgroud)

我的选择如下所示:

$selection = Read-Host -Prompt "
Please make a selection
0 - Selection A
1 - Selection B
99 - Selection C "
Run Code Online (Sandbox Code Playgroud)

然后我尝试根据这样的选择恢复该值:

$choices.$selection
Run Code Online (Sandbox Code Playgroud)

或者

$choices.{$selection}
Run Code Online (Sandbox Code Playgroud)

这不起作用。是否可以使用变量作为键来调用哈希表值?

谢谢你尽你所能的帮助!

小智 6

您可以使用 Get_Item 方法。

$myChoice = $choices.Get_Item($selection)
Run Code Online (Sandbox Code Playgroud)

您可能必须首先将 $selection 变量转换为整数,因为我相信它将作为字符串出现。

有关哈希表的更多信息:https ://technet.microsoft.com/en-us/library/ee692803.aspx


Ada*_*dam 0

上面的评论都是正确答案。我将它们添加为结束问题的答案。

作者: PetSerAl

$choices.[int]$selection
Run Code Online (Sandbox Code Playgroud)

或者通过beatcracker

$choices = @{ '0' = 'SelectionA'}
Run Code Online (Sandbox Code Playgroud)

这是PowerShell 的自动类型转换盲点之一。哈希表中的键是整数,但 Read-Host 返回字符串。