【问题标题】:How do I pass an array as a parameter to another script?如何将数组作为参数传递给另一个脚本?
【发布时间】:2011-11-01 10:29:42
【问题描述】:

由于某种原因,我似乎无法将字符串数组作为参数传递给脚本块。我在这里做错了什么?

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

param(
    [parameter(Mandatory=$true)]
    [string[]]$myarr
)

foreach ($elem in $myarr){
    $elem
}

我从另一个脚本中调用它

 $myarr = @("111", "222")
 start-job -filepath myscript.ps1 -arg $myarr

我只得到了数组中的第一项 - “111”。

【问题讨论】:

    标签: arrays powershell parameters arguments


    【解决方案1】:

    尝试如下:

    start-job -filepath myscript.ps1 -arg (,$myarr)
    

    -ArgumentList 接受参数列表/数组。因此,当您提供-arg $myarr 时,就好像您将数组的元素作为参数传递。因此,您必须强制 PowerShell 将其视为单个参数,即一个数组。

    【讨论】:

    • 是的,它有效。你能解释一下为什么吗? :) 据我了解,() 中的逗号表示它实际上是一个包含两个子数组的数组,对吧?
    • @Mishkin - 解释是 -ArgumentList 接受参数列表/数组。因此,当您提供-arg $myarr 时,就好像您将数组的元素作为参数传递。因此,您必须强制 powershell 将其视为单个参数,即一个数组。
    • 如何传递数组和另一个变量? -arg (,$myarr, $singleValue)。例如,$singleValue = "x"
    • 该问题仅在尝试传递单个数组参数时发生,当您传递一个数组和另一个参数时,您会使用逗号隐式创建另一个数组。例如,在-arg $array, $value 中,$array, $value 表达式是一个数组,您可以通过在命令行上计算它来查看它。 ($arr, 5)[0] 将打印 $arr; ($arr, 5)[1] 将打印 5
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多