У меня есть командлет powershell, и я не могу заставить набор параметров работать. Этот командлет имеет 31 возможный параметр и может опускаться на два возможных пути обработки. Все 31 параметры являются необязательными, 18 являются общими для обоих путей, 9 уникальны для «правильного» пути и 4 уникальны для «левого» пути. То, что я пытаюсь выполнить, - использовать атрибуты ParameterSet powershell, чтобы указать, какой параметр можно использовать, когда. Но это не работает.Параметр PowerShell не распознается
Ниже приведена макет моей попытки. Имена изменены для защиты невинных.
[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 в заголовке. Я пробовал удваивать наборы, например, включать набор с именем «both» и составлять каждую часть параметра этого набора. Я прочитал статью MSDN о наборах параметров, я прочитал первые 40 статей, которые google возвращает, но я не могу заставить их работать. Половина моей команды стояла за моим столом, наблюдая за тем, как я это делаю, и все они тоже в тупике.
Что я могу сделать, чтобы:
- выяснить, почему он не распознает параметр устанавливает
- сделать так, что он делает
- предотвратить это в будущем
В таком случае я бы начал комментировать параметры до тех пор, пока не найду ни оскорбительный параметр, либо обнаружил, что есть определенное количество параметров, которые возбуждают ошибку в PowerShell. Если вы обнаружите, что какой-то параметр вызывает проблему, отправьте код для этого параметра. –
Я бы подумал о создании пользовательского объекта для отслеживания всех этих переменных. – Gisli
Один из моих соседей предложил переосмыслить функциональность наборов параметров с помощью большого набора selects/ifs. Это, безусловно, будет самым быстрым решением. Возможно, я попробую это и дам вам знать, работает ли это. – jnwebster