Как мне легко передать все параметры между командлетами? - PullRequest
2 голосов
/ 03 апреля 2019

Используя CmdletBinding, существует ли простой способ регургитации точных параметров, с которыми был вызван командлет, чтобы я мог вызвать другой командлет с точно такими же параметрами?

Я пишу командлеты Powershell в Powershell.Я использую расширенные функции.У меня есть командлет Get-Environment с несколькими необязательными параметрами, такими как [string] EnvironmentName и [switch] Active.У меня есть другой командлет Get-Machine со всеми теми же необязательными параметрами;это называется Get-Environment.Первоначально, прежде чем добавить параметр [switch] Active, я просто вызвал Get-Environment со всеми переменными в явном виде (см. Ниже).

Теперь я не могу сделать то же самое, потому что если я добавлю «active»тогда это будет установлено.Я не хочу делать тест в Get-Machine, чтобы увидеть, если Active имеет значение true, и иметь две разные версии вызова Get-Environment.Я бы предпочел не обходить хеш-таблицу $ PSBoundParameters и восстанавливать исходные строки, но это выглядит как единственно возможный путь вперед (если я что-то упустил.)

Оригинальный код внутри get-machine:

$environments = get-Environment -EnvironmentName $EnvironmentName

1 Ответ

3 голосов
/ 03 апреля 2019

Ох, ради Пита.Я нашел это.Я скучал по большой глупой легкой вещи.Я оставлю это для других, и в случае, если у кого-то будет еще лучший ответ.

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

$ PSBoundParameters можно использовать для вызова подчиненной функции или командлета, передающего те же параметры - PowerShell будет автоматически выводить значения хеш-таблицы вместо необходимости вводить каждый изпараметры: get-otherthing @ PSBoundParameters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...