从命令行运行脚本并传递String数组

时间:2014-08-29 14:12:40

标签: powershell

所以基本上我需要从命令行运行我的ps1脚本并将我的自定义参数传递给我的脚本。我的脚本需要一个String数组,但是当我运行该命令时,我得到一个错误,即找不到接受参数' X1'

的位置参数

这是我的命令行:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -NoProfile -NonInteractive -File "C:\Program Files\MSBuild\MyScript.ps1" -builds "X1” “X2" "X3" "X4"

我的理解是它知道如何处理第一个参数' X1'但不是第二次,所以它崩溃了?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我无法解释为什么-file无效,但该参数还有其他已知问题。当您使用它时,您无法从PowerShell获得正确的退出代码。使用-command确实有效:

Powershell.exe -ExecutionPolicy RemoteSigned -NoProfile -NonInteractive -Command "& {& 'C:\Program Files\MSBuild\myscript.ps1' -builds x1,x2,x3}"

答案 1 :(得分:2)

您需要使用-Command参数而不是-File参数。请注意下面屏幕截图和示例脚本中的行为更改。

[CmdletBinding()]
param (
    [int[]] $MyInts
)

foreach ($MyInt in $MyInts) {
    $MyInt + 1;
}

enter image description here