Для этих целей лучше использовать не формирование в виде строки, а так называемый Splatting
$params = @{
Param1 = "value1"
}
if ($something) { $params.Param2 = "*value" }
MyFunction @params
тогда в зависимости от сформированных в хеше параметров вызовется всё что надо
Свичи прекрасно привязываются в стиле
Start-Process -Wait:$isWait
Вообще, все значения параметров можно передавать не через пробел, а через двоеточие, именно так их формирует splatting.
А еще внутри функции есть автоматическая переменная
$PSBoundParameters в которй лежит хеш переданных параметров и их значений и оттуда можно узнать, передан ли параметр явно или получил значение по-умолчанию (проверив, есть ли ключ)
Или можно делать прокси-функции типа
Function Get-OtherCompProcess {
Param(
#здесь все обычные параметры для get-process кроме computername
)}
$PSBoundParameters.computername='othercomp'
Get-Process @PSBoundParameters