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

Bil*_*eal 9 powershell function function-parameter

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

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

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

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

bri*_*ist 14

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


你有几个选择:

  1. 使用$args(信用到hjpotter92的答案)

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

  3. 使用一个单一的参数与ValueFromRemainingArguments参数,如

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


小智 14

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