Powershell:将 `Read-Host` 作为键传递给 HashTable

Powershell: Passing a `Read-Host` as the key to HashTable

我正在尝试将用户输入传递给 hashTable,我正在尝试这样做。

$someHash = 
@{
    1 = "one";
    2 = "two";
    3 = "three"
 }
 $x = Read-Host "enter 1,2,3"
 Write-Output($someHash.$x) 

出于某种原因 $someHash.$x$someHash[$x] return 为空,但 $x 具有它的价值。

我还可以在对键进行硬编码时从地图中获取值。不确定我做错了什么。

添加地址评论。 我也尝试过使用相同的结果。

$someHash.[int]$x 
$someHash[[int]$x]
[int]$x = Read-Host "enter 1,2,3"

我还使用单引号和双引号将字符串用作键。同样的结果。

使用 字符串键 你不需要将 Read-Host 的结果转换为 int.

注意,如果下面不行,很有可能是因为$x在([int]$x)之前被类型限制了,使用Remove-Variable x 或重新启动您的 PowerShell 会话。

$someHash =
@{
    '1' = "one";
    '2' = "two";
    '3' = "three"
}
$x = Read-Host "enter 1,2,3"
$someHash[$x] # => Works (Recommended)
$someHash.$x  # => Works

使用 int keys 你需要输入 constrain the result of Read-Host to int:

$someHash =
@{
    1 = "one";
    2 = "two";
    3 = "three"
}
[int]$x = Read-Host "enter 1,2,3"
$someHash[$x] # => Works (Recommended)
$someHash.$x  # => Works