Наборы параметров PowerShell не распознаются - PullRequest
0 голосов
/ 26 января 2012

У меня есть командлет 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, но я не могу заставить его работать.Половина моей команды стояла за моим столом, наблюдая, как я это делаю, и все они тоже в замешательстве.

Что я могу сделать, чтобы:

  • выяснить, почему это не так?При распознавании моих наборов параметров
  • сделайте так, чтобы он
  • не допустил этого в будущем

1 Ответ

0 голосов
/ 27 января 2012

Кит Хилл, спасибо за подсказку - я попытался закомментировать все параметры, кроме самых минимальных, и заметил, что когда я запустил команду get-help для командлета, он по-прежнему возвращал все параметры .Я знал, что происходит что-то глупое, и оказывается, что файл справки не обновлялся, когда я компилировал командлет.

Когда я решал эту проблему, кажется, что все функционировало именно так, как я ожидалк тому, что get-help использовала старую информацию.Вот почему никто другой не мог понять это, либо.Я все делал правильно, поэтому никаких ошибок, только плохая документация.

Главный момент лицевой стороны, но у меня все получилось.Урок: всегда убедитесь, что ваша помощь генерируется автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...