我正在尝试将数组传递给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)
我做错了什么?
答案 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体验之后绝对违反直觉。