如何在powershell函数中传递参数?

时间:2015-11-13 21:16:33

标签: function powershell function-parameter

我有一个看起来像这样的函数:

function global:Test-Multi {
    Param([string]$Suite)
    & perl -S "$Suite\runall.pl" -procs:$env:NUMBER_OF_PROCESSORS
}

我想允许用户为Test-Multi指定更多参数,并将它们直接传递给底层的旧perl脚本。

powershell是否提供了一种机制来为此目的允许其他可变行为?

3 个答案:

答案 0 :(得分:11)

看到你的评论后,选项3听起来就像你想要的那样。

您有几个选择:

  1. 使用$args(贷记至hjpotter92's answer

  2. 明确定义您的其他参数,然后在函数中解析它们以将它们添加到您的perl调用中。

  3. 使用ValueFromRemainingArguments argument的单个参数,例如

    function global:Test-Multi {
        Param(
            [string]$Suite,
            [parameter(ValueFromRemainingArguments = $true)]
            [string[]]$Passthrough
            )
        & perl -S "$Suite\runall.pl" -procs:$env:NUMBER_OF_PROCESSORS @Passthrough
    }
    

答案 1 :(得分:1)

我不确定您希望实现的目标,但传递给函数的参数可以在函数内部的productdescription变量中访问。

答案 2 :(得分:1)

$args 不会正确传递参数。如果您希望参数保留为单独的参数,则应改用 @args