Есть ли способ определить набор параметров PowerShell без параметров?
У меня есть несколько довольно сложных функций, которые я пишу для библиотечного модуля, с множеством различных способов его вызова. Тем не менее, на самом деле возможно по умолчанию все из них, но когда я пытаюсь вызвать мою функцию без параметров, вызов завершается неудачно, потому что набор параметров не может быть определен.
Я хотел бы определить набор параметров, который не содержит никаких параметров, такой, что вызовы без параметров успешны. Это трудно сделать, так как ParameterSetName является свойством атрибута Parameter, и ничего нельзя приписать.
Я экспериментировал со свойством DefaultParameterSet атрибута CmdletBinding, который находится в блоке param, однако, похоже, ничего не получалось. Кажется, что имя набора параметров, определенное там, должно действительно существовать, чтобы Powershell использовал его по умолчанию.
В настоящее время мое лучшее приближение к этому варианту использования состоит в том, чтобы определить, что один из наборов параметров не имеет обязательных параметров, однако они завершаются ошибкой, когда передаются пустые строки или нули, и я бы хотел, чтобы этого не произошло.
Это возможно?
1 ответ
Уверенный. Просто укажите имя набора параметров по умолчанию, которое не используется в противном случае:
function Foo {
[CmdletBinding(DefaultParameterSetName='x')]
Param(
[Parameter(Mandatory=$true, ParameterSetName='y')]$a,
[Parameter(Mandatory=$false, ParameterSetName='y')]$b,
[Parameter(Mandatory=$true, ParameterSetName='z')]$c,
[Parameter(Mandatory=$false)]$d
)
"`$a: $a"
"`$b: $b"
"`$c: $c"
"`$d: $d"
}