Vamos usar três recursos do PowerShell:
- O operador de chamada,
&
, chama um comando cujo nome pode ser especificado por uma expressão. Ao contrário deInvoke-Expression
, ele pode manipular parâmetros vinculados sem restringir tudo. - A variável
$PSBoundParameters
é uma hashtable dos parâmetros especificados para o cmdlet atual e seus valores. -
Splatting é como o contrário de
$PSBoundParameters
: ele usa uma hashtable como os parâmetros associados a um cmdlet.
Juntando tudo, substituímos sua invocação Invoke-Expression
por essa, chamando um cmdlet cujo nome é o nome do conjunto de parâmetros e passando todos os parâmetros da função:
& $PSCmdlet.ParameterSetName @PSBoundParameters