5

我正在尝试将数组传递给 PowerShell 脚本,但我总是只得到一个值。我已经用谷歌搜索了我的屁股,但我找不到任何东西。我需要做的就是将一个数组传递给脚本。这是我的代码:

param($Location)
($location).count

Foreach ($loc in $Location)
{

$loc

}

这是我正在运行的命令:

C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Unrestricted  -File "C:\ParaTestingArray.ps1" -location Sydney,London

这是输出:

1
悉尼

对于我的生活,我无法获取数组中的其他值。我试过使用

param([string[]]$Location)

我试过了:

-location "Sydney","London"
-location @(Sydney,London)
-location Sydney London
-location Sydney,London
-location (Sydney,London)

我究竟做错了什么?

4

3 回答 3

8

-command改用开关。

像这样:

powershell -Command "&{C:\ParaTestingArray.ps1 -Location A,B,C}"

从 about_powershell:

要编写运行 Windows PowerShell 命令的字符串,请使用以下格式:

     "& {<command>}"

其中引号表示字符串,调用运算符 ( &) 导致命令被执行。

于 2013-03-07T06:45:48.137 回答
1

我无法重现该结果:

$script = @'
param($Location)
($location).count

Foreach ($loc in $Location)
{

$loc

}
'@

$script | sc test.ps1

.\test.ps1 sydney,london

2 悉尼 伦敦

编辑:这有效:

$args.count

Foreach ($loc in $args)
{

$loc

}

称为:powershell.exe -file c:\test.ps1 sydney london

于 2013-03-07T02:56:03.573 回答
0

Powershell.exe -Command "&{C:\script.ps1 -ParmArray 1,2,3}"

把戏对我有用——但不幸的是感觉很老套。在我剩下的 powershell 经验之后,这绝对是违反直觉的。

于 2016-11-07T23:21:01.073 回答