Search code examples
functionpowershellfunction-parameter

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


I have a function that looks something like this:

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

I would like to allow the user to specify more parameters to Test-Multi and pass them directly to the underlying legacy perl script.

Does powershell provide a mechanism to allow additional variadic behavior for this purpose?


Solution

  • After seeing your comment, option 3 sounds like exactly what you want.


    You have a few options:

    1. Use $args (credit to hjpotter92's answer)

    2. Explicitly define your additional parameters, then parse them all in your function to add them to your perl call.

    3. Use a single parameter with the ValueFromRemainingArguments argument, e.g.

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