有没有一种简单的方法可以将特定的*named*PowerShell参数直接传递给被调用的函数?

有没有一种简单的方法可以将特定的*named*PowerShell参数直接传递给被调用的函数?,powershell,parameters,pass-through,Powershell,Parameters,Pass Through,我确信我在某个地方读到过,有一种简单的方法可以将命名参数从调用函数传递到被调用函数,而无需显式命名和指定每个参数 这不仅仅是重复使用位置;我感兴趣的是,在某些情况下,传递的参数的名称是相同的,但在其他情况下则不同 我还认为有一种方式不依赖于立场 function called-func { param([string]$foo, [string]$baz, [string]$bar) write-debug $baz write-host $foo,$bar } fun

我确信我在某个地方读到过,有一种简单的方法可以将命名参数从调用函数传递到被调用函数,而无需显式命名和指定每个参数

这不仅仅是重复使用位置;我感兴趣的是,在某些情况下,传递的参数的名称是相同的,但在其他情况下则不同

我还认为有一种方式不依赖于立场

function called-func {
    param([string]$foo, [string]$baz, [string]$bar)
    write-debug $baz
    write-host $foo,$bar
}

function calling-func {
    param([int]$rep = 1, [string]$foo, [string]$bar)
    1..$rep | %{
        called-func -foo $foo -bar $bar -baz $rep ## <---- Should this be simpler?
    }
}

calling-func -rep 10 -foo "Hello" -bar "World"
名为func的函数{
参数([string]$foo,[string]$baz,[string]$bar)
写调试$baz
写入主机$foo,$bar
}
函数调用函数{
参数([int]$rep=1,[string]$foo,[string]$bar)
1..$rep |%{
叫做func-foo$foo-bar$bar-baz$rep###怎么样

called-func  $foo $bar

嗯,我想我把我读到的开关参数弄糊涂了。据我所知,最好的方法就是像这样重用参数:

called-func -foo:$foo -bar:$bar
在PowerShell v2中(诚然,您可能还没有准备好移动到该版本),您可以在不提前知道参数的情况下传递参数:

called-func $PSBoundParameters

PSBoundParameters是实际提供给函数的所有参数的字典。您可以删除不需要的参数(或者添加).

我先做了一些谷歌搜索,但是因为我没有在这里看到答案,所以我也想在这里找到答案。所以在谷歌搜索之后,我想我想到的功能与“飞溅”和传递开关参数有关。我会在得到所有细节后发布答案。是的,我迫不及待地要等到v2投入生产:)冒号当
foo
是开关参数时,需要使用语法。如果传递
-foo$foo
,则调用func
将认为它接收到两个参数(开关
foo
和一个值
$foo
)。