Мы собираемся использовать три функции PowerShell:
- Оператор вызова
&
, вызывает команду, имя которой может быть указано выражением. В отличие от этогоInvoke-Expression
, он может обрабатывать связанные параметры, не разбирая все. $PSBoundParameters
Переменный является Хешем параметров, указанных в текущий командлет и их значение.- Splatting похож на обратную
$PSBoundParameters
: он использует хеш-таблицу в качестве параметров привязки к командлету.
Собрав все это вместе, мы заменим ваш Invoke-Expression
вызов этим, вызывая командлет, имя которого является именем набора параметров, и передавая ему все параметры функции:
& $PSCmdlet.ParameterSetName @PSBoundParameters