我遇到了一些Powershell的问题,我的代码看起来像这样:
param
(
[Parameter(Mandatory=$true)]
$Array = ''
)
foreach ($member in $Array){
Write-Host "TEST"
$server = $member["server"]
$path = $member["path"]
$key = $member["key"]
Write-Host $server
Write-Host $path
Write-Host $key
}
当我将以下一行作为输入提供时,脚本仅打印“TEST”,但当我在脚本内部使用完全相同的代码定义
$Array
时,脚本按预期工作。@(@{"server" = "server1"; "path" = "\\path1"; "key" = "key1"}, @{"server" = "server2"; "path" = "\\path2"; "key" = "key2"}, @{"server" = "server3"; "path" = "\\path3"; "key" = "key3"})
期望的输出结果是:
TEST
server1
\\path1
key1
TEST
server2
\\path2
key2
TEST
server3
\\path3
key3
这是我从Python背景下首次尝试PowerShell。
如果在命令行级别传递此数组,则似乎它可以工作。但是,如果脚本提示输入并在那一点上输入,则会失败。 我做错了什么?
澄清一下,下面的代码完全正常工作,每个键的值都会打印到控制台。
$Array = @(@{"server" = "server1"; "path" = "\\path1"; "key" = "key1"}, @{"server" = "server2"; "path" = "\\path2"; "key" = "key2"}, @{"server" = "server3"; "path" = "\\path3"; "key" = "key3"})
foreach ($member in $Array){
Write-Host "TEST"
$server = $member["server"]
$path = $member["path"]
$key = $member["key"]
Write-Host $server
Write-Host $path
Write-Host $key
}
$PSVersionTable['PSVersion']
。 - Mathias R. Jessen