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

问题描述 投票:2回答:1

使用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
powershell parameters
1个回答
3
投票

哦,为了皮特的缘故。我找到了。我错过了那个愚蠢的大事。我会把它留给其他人,如果有人有更好的答案。

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

$ PSBoundParameters可用于调用从属函数或cmdlet传递相同的参数 - PowerShell将自动splat哈希表的值,而不必键入每个参数:get -otherthing @PSBoundParameters

© www.soinside.com 2019 - 2024. All rights reserved.