Arrays 如何将数组作为参数传递给另一个脚本?
由于某些原因,看起来我无法将字符串数组作为参数传递给scriptblock。我做错了什么 从另一个脚本调用的我的脚本:Arrays 如何将数组作为参数传递给另一个脚本?,arrays,powershell,parameters,arguments,Arrays,Powershell,Parameters,Arguments,由于某些原因,看起来我无法将字符串数组作为参数传递给scriptblock。我做错了什么 从另一个脚本调用的我的脚本: param( [parameter(Mandatory=$true)] [string[]]$myarr ) foreach ($elem in $myarr){ $elem } 我从另一个脚本中将其称为 $myarr = @("111", "222") start-job -filepath myscript.ps1 -arg $myarr
param(
[parameter(Mandatory=$true)]
[string[]]$myarr
)
foreach ($elem in $myarr){
$elem
}
我从另一个脚本中将其称为
$myarr = @("111", "222")
start-job -filepath myscript.ps1 -arg $myarr
我只得到了数组中的第一项——“111”。请按如下方式尝试:
start-job -filepath myscript.ps1 -arg (,$myarr)
-ArgumentList
接受参数列表/数组。因此,当您给出-arg$myarr
时,就好像您在传递数组的元素作为参数一样。因此,您必须强制PowerShell将其视为单个参数,即数组。是的,它可以工作。你能解释一下原因吗?:)据我所知,()中的逗号意味着它实际上是一个包含两个子数组的数组,对吗?@Mishkin-解释应该是-ArgumentList接受一个参数列表/数组。因此,当您给出-arg$myarr
时,就好像您在传递数组的元素作为参数一样。因此,您必须强制powershell将其视为单个参数,即数组。如何传递数组和另一个变量-arg(,$myarr,$singleValue)。例如,$singleValue=“x”只有在尝试传递单个数组参数时才会出现问题,当传递一个数组和另一个参数时,然后隐式创建另一个带有逗号的数组。e、 g在-arg$array,$value
中,$array,$value
表达式是一个数组,您可以通过在命令行上对其求值来查看它<代码>($arr,5)[0]将打印$arr<代码>($arr,5)[1]将打印5