【问题标题】:Powershell Hashtable values using variable key使用变量键的 Powershell Hashtable 值
【发布时间】:2016-07-25 23:44:27
【问题描述】:

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

我的哈希表如下所示:

$choices = @{ 0 = "SelectionA"; 
              1 = "SelectionB"; 
              99 = "SelectionC"}

我的选择如下所示:

$selection = Read-Host -Prompt "
Please make a selection
0 - Selection A
1 - Selection B
99 - Selection C "

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

$choices.$selection

$choices.{$selection}

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

感谢您提供的任何帮助!

【问题讨论】:

  • $choices.[int]$selection
  • $choices = @{ '0' = 'SelectionA'} :)。这是 PowerShell 的自动类型转换盲点之一。哈希表中的键是整数,但 Read-Host 返回字符串。
  • 两个很好的答案!两者也都有效。非常感谢! :)

标签: powershell variables key hashtable


【解决方案1】:

您可以使用 Get_Item 方法。

$myChoice = $choices.Get_Item($selection)

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

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

【讨论】:

    【解决方案2】:

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

    PetSerAl:

    $choices.[int]$selection
    

    beatcracker:

    $choices = @{ '0' = 'SelectionA'}
    

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

    【讨论】:

      【解决方案3】:

      PSVersion 7 中的简单作品

      $ha=@{0='aa';1='bb'}
      $sel=0
      $ha.$sel // 'aa'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2013-11-12
        • 2011-05-22
        • 2012-06-09
        • 1970-01-01
        • 2021-09-15
        相关资源
        最近更新 更多