У меня есть командлет powershell, и я не могу заставить работать наборы параметров.Этот командлет имеет 31 возможных параметров и может идти по двум возможным путям обработки.Все 31 параметр являются необязательными, 18 являются общими для обоих путей, 9 уникальны для «правого» пути и 4 уникальны для «левого» пути.То, что я пытаюсь сделать, это использовать атрибуты PowerShell ParameterSet, чтобы указать, какой параметр можно использовать, когда.Но это не работает.
Ниже приведен макет моей попытки.Имена были изменены, чтобы защитить невинных.
[Parameter]
public string SomeString1 { get; set; }
[Parameter]
public string SomeString2 { get; set; }
[Parameter(ParameterSetName = "left")]
public string LeftName { get; set; }
[Parameter(ParameterSetName = "left")]
public string LeftDomain { get; set; }
[Parameter(ParameterSetName = "right")]
public string RightID { get; set; }
[Parameter(ParameterSetName = "right")]
public string RightIP { get; set; }
Поэтому, когда я запускаю это, я пытаюсь проверить свои списки параметров, используя get-help, и все, что я вижу, - это один большой набор параметров, когда он должен разделитьсяих в два списка, один из которых включает два «левых» параметра плюс два безымянных, а другой включает «правые» параметры плюс неназванные.
Веселая часть в том, что у нас есть еще один командлет, который позволяету меня это просто отлично, без проблем, идеальный выход.Но по какой-то причине этот не позволяет мне.То же самое, тот же синтаксис, только разные имена.Так что я знаю, что наши настройки верны, потому что иногда они работают.Но это не работает все время, поэтому я в тупике.
Я попытался изменить некоторые / все параметры на Обязательные, я попытался использовать DefaultParameterSetName в заголовке.Я попытался удвоить наборы, например, включить набор с именем «оба» и сделать каждый параметр частью этого набора.Я прочитал статью MSDN о наборах параметров, я прочитал первые 40 статей, которые возвращает Google, но я не могу заставить его работать.Половина моей команды стояла за моим столом, наблюдая, как я это делаю, и все они тоже в замешательстве.
Что я могу сделать, чтобы:
- выяснить, почему это не так?При распознавании моих наборов параметров
- сделайте так, чтобы он
- не допустил этого в будущем