Powershell:传递一个"读取主机"作为HashTable的键



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

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

由于某些原因,$someHash.$x$someHash[$x]返回null,但$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键,您需要将Read-Host的结果类型约束为int:

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

最新更新