Передача значений ParameterSet другому ParameterSet вызывает исключение AmbiguousParameterSet
Я пытаюсь вызвать функцию PowerShell с набором параметров, используя другую функцию PowerShell с набором параметров. В коде ниже я хочу позвонить Entry-Point
используя либо -ABC
или же -DEF
Переключатель, а не оба. Тем не менее, когда я бегу Entry-Point
с любым количеством параметров, я получаю AmbiguousParameterSet
Исключение ниже.
function My-Function {
[CmdletBinding(DefaultParameterSetName='ABC')]
Param(
[Parameter(Mandatory=$false, ParameterSetName='ABC', Position=1)]
[switch] $ABC,
[Parameter(Mandatory=$false, ParameterSetName='DEF', Position=1)]
[switch] $DEF,
[switch] $Extra
)
echo $ABC
echo $DEF
echo $Extra
}
function Entry-Point {
[CmdletBinding(DefaultParameterSetName='ABC')]
Param(
[Parameter(Mandatory=$false, ParameterSetName='ABC', Position=1)]
[switch] $ABC,
[Parameter(Mandatory=$false, ParameterSetName='DEF', Position=1)]
[switch] $DEF,
[switch] $Extra
)
My-Function -ABC:$ABC -DEF:$DEF -Extra:$Extra
}
My-Function: набор параметров не может быть разрешен с использованием указанного имени параметры. В строке:24 символа:1 + My-Function -ABC:$ABC -DEF:$DEF -Дополнительно:$Extra + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (:) [My-Function], ParameterBindingException + FullyQualifiedErrorId: AmbiguousParameterSet,My-Function
Как я могу передать параметры -ABC
а также -DEF
- был ли указан каждый или нет - из функции Entry-Point
функционировать My-Function
?
1 ответ
Быстрый ответ - брызги. PowerShell позволяет вам представлять хеш-таблицу в качестве параметров функции (используя @ вместо $) и использует ключи хеш-таблицы в качестве имен параметров, значения являются значениями параметров.
Кроме того, каждая расширенная функция автоматически устанавливает $PSBoundParameters в качестве хеш-таблицы параметров, которые передаются в.
Итак... вы можете просто сказать:My-Function @PSBoundParameters