使用CmdletBinding,是否有一种简单的方法可以反转调用cmdlet的确切参数,因此我可以使用完全相同的参数调用另一个cmdlet?
我在Powershell写的Powershell Cmdlet。我正在使用高级功能。我有一个名为Get-Environment的cmdlet,有几个可选参数,如[string] EnvironmentName和[switch] Active。我有另一个名为Get-Machine的cmdlet,它包含所有相同的可选参数;它称为Get-Environment。最初,在我添加[switch] Active参数之前,我只是明确地调用了所有变量的Get-Environment(见下文)。
我现在不能做同样的事情,因为如果我添加“有效”,那么它将被设置。我不想在Get-Machine中进行测试,看看Active是否为真,并且有两个不同版本的Get-Environment调用。我更喜欢不必遍历$ PSBoundParameters散列表并重建原始字符串,但这看起来是唯一可行的方法(除非我遗漏了一些东西。)
get-machine内的原始代码:
$environments = get-Environment -EnvironmentName $EnvironmentName
哦,为了皮特的缘故。我找到了。我错过了那个愚蠢的大事。我会把它留给其他人,如果有人有更好的答案。
https://ss64.com/ps/psboundparameters.html
$ PSBoundParameters可用于调用从属函数或cmdlet传递相同的参数 - PowerShell将自动splat哈希表的值,而不必键入每个参数:get -otherthing @PSBoundParameters