将数组传递给PowerShell脚本

use*_*466 4 arrays powershell param

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

param($Location)
($location).count

Foreach ($loc in $Location)
{

$loc

}
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的命令:

C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Unrestricted  -File "C:\ParaTestingArray.ps1" -location Sydney,London
Run Code Online (Sandbox Code Playgroud)

这是输出:

1
悉尼

对于我的生活,我无法让它抓住数组中的其他值.我试过用

param([string[]]$Location)
Run Code Online (Sandbox Code Playgroud)

我试过了:

-location "Sydney","London"
-location @(Sydney,London)
-location Sydney London
-location Sydney,London
-location (Sydney,London)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 7

-command改用开关.

像这样:

powershell -Command "&{C:\ParaTestingArray.ps1 -Location A,B,C}"
Run Code Online (Sandbox Code Playgroud)

来自about_powershell:

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

     "& {<command>}"
Run Code Online (Sandbox Code Playgroud)

引号表示字符串,而invoke operator(&)导致执行命令.


mjo*_*nor 1

我无法重现该结果:

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

Foreach ($loc in $Location)
{

$loc

}
'@

$script | sc test.ps1

.\test.ps1 sydney,london
Run Code Online (Sandbox Code Playgroud)

2 悉尼 伦敦

编辑:这有效:

$args.count

Foreach ($loc in $args)
{

$loc

}
Run Code Online (Sandbox Code Playgroud)

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