Это невозможно сделать так, как вы думаете об этом. Переменная PSBoundParameters
является родной для выполнения командлета и поэтому зависит от блока param
определения командлета. Таким образом, в вашем случае Test-ScriptParameter
проверяет, был ли он вызван параметром MyParam
, но поскольку он не указывает его, он всегда будет false
.
Чтобы достичь того, чего, я считаю, вы хотите, вам нужно создать функцию, которая проверяет хеш-структуру, например, PSBoundParameters
для определенного ключа. Ключ должен быть указан по имени. Но тогда простого $PSBoundParameters.ContainsKey('MyParam')
там, где вам нужно, должно быть достаточно.