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

How can I pass-through parameters in a powershell function?

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

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

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

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

我不确定您希望实现什么,但是传递给函数的参数可以在函数内部可用的 $args 变量中访问。

看到您的评论后,选项 3 听起来正是您想要的。


您有几个选择:

  1. 使用 $args(记入

  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
    }
    

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