2015-11-13 67 views
6

我有一个功能,看起来是这样的:如何在PowerShell功能中传递参数?

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

我想允许用户指定多个参数测试,多和直接传递到底层遗留Perl脚本。

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

回答

6

看到您的评论后,选项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 
    } 
    
+0

我不认为你的“ValueFromRemainingArguments”链接去正确的地方.... –

+1

@BillyONeal谢谢,更新。这是一个long-ish文件,因此建议''ValueFromRemainingArguments'的CTRL + F'。 – briantist

+2

添加代码示例。谢谢! –

1

我不确定你想达到什么,但传递给函数的参数可以在函数内可用的$args变量中访问。

+0

不过的$ args将包含 '-Suite' 和它的设置为好。我只想转发我的函数无法处理的参数。 –

+0

@BillyONeal你可以过滤'$ args'数组并删除'-Suite'参数。 – hjpotter92

+0

当然,我可以想办法做到这一点,但如果PS已经有一种正式的方式来声明我想要使用它。 –