将数组传递给PowerShell脚本

时间:2013-03-07 02:46:42

标签: arrays powershell param

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

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)

我做错了什么?

3 个答案:

答案 0 :(得分:7)

改为使用-command开关。

像这样:

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

来自about_powershell:

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

     "& {<command>}"

引号表示字符串和 调用操作符(&)导致命令被执行。

答案 1 :(得分: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

答案 2 :(得分:0)

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

技巧对我有用 - 但不幸的是感觉很糟糕。在我的其他PowerShell体验之后绝对违反直觉。