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

时间:2009-08-05 15:53:14

标签: powershell parameters pass-through

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

这不仅仅是重用这个职位;我对传递参数的名称在某些情况下是相同但在其他情况下不相同的情况感兴趣。

我也认为有一种方式不依赖于位置。

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"

该方法是什么,是否有链接?

我认为可能是Jeffrey Snover,但我不确定。

3 个答案:

答案 0 :(得分:3)

在PowerShell v2中(诚然,您可能尚未准备好移动)允许您在不事先了解参数的情况下传递参数:

called-func $PSBoundParameters

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

答案 1 :(得分:2)

好吧,我觉得我在阅读有关切换参数的blog post时感到困惑。据我所知,最好的方法就是重复使用这样的参数:

called-func -foo:$foo -bar:$bar

答案 2 :(得分:1)

怎么样

called-func  $foo $bar