Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将数组作为参数传递给另一个脚本?_Arrays_Powershell_Parameters_Arguments - Fatal编程技术网

Arrays 如何将数组作为参数传递给另一个脚本?

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

由于某些原因,看起来我无法将字符串数组作为参数传递给scriptblock。我做错了什么

从另一个脚本调用的我的脚本:

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