如何轻松在cmdlet之间传递所有参数?

时间:2019-04-03 00:04:07

标签: powershell parameters

使用CmdletBinding,是否有一种简单的方法可以重新定义调用cmdlet的确切参数,因此我可以使用完全相同的参数来调用另一个cmdlet?

我正在Powershell中编写Powershell Cmdlet。我正在使用高级功能。我有一个名为Get-Environment的cmdlet,其中包含几个可选参数,例如[string] EnvironmentName和[switch] Active。我还有另一个名为Get-Machine的cmdlet,具有所有相同的可选参数。它称为Get-Environment。最初,在我添加[switch] Active参数之前,我只是简单地使用所有变量明确调用了Get-Environment(请参见下文)。

我现在不能做同样的事情,因为如果我添加“ active”,那么它将被设置。我不想在Get-Machine中进行测试以查看Active是否为true并具有两个不同版本的Get-Environment调用。我宁愿不必遍历$ PSBoundParameters哈希表并重建原始字符串,但这看起来是唯一可行的方法(除非我遗漏了一些东西)。

get-machine内的原始代码:

$environments = get-Environment -EnvironmentName $EnvironmentName

1 个答案:

答案 0 :(得分:3)

哦,Pete。我找到了。我错过了愚蠢的大事。我会把这个留给别人,以防有人得到更好的答案。

https://ss64.com/ps/psboundparameters.html

  

$ PSBoundParameters可用于调用传递相同参数的下级函数或cmdlet-PowerShell将自动生成哈希表的值,而不必键入每个参数:   获取其他@PSBoundParameters