Как лучше всего выполнить проверку командлета PowerShell для зависимых параметров? Например, в приведенном ниже примере командлета мне нужно выполнить проверку того, что Low больше, чем High, но это кажется невозможным с атрибутами проверки.
[Cmdlet(VerbsCommon.Get, "FakeData")]
public class GetFakeData : PSCmdlet
{
[Parameter(Mandatory = true)]
[ValidateNotNullOrEmpty]
public int Low { get; set; }
[Parameter(Mandatory = true)]
[ValidateNotNullOrEmpty]
public int High { get; set; }
protected override void BeginProcessing()
{
if (Low >= High)
{
// Is there a better exception to throw here?
throw new CmdletInvocationException("Low must be less than High");
}
base.BeginProcessing();
}
protected override void OnProcessRecord()
{
// Do stuff...
}
}
Есть ли лучший способ сделать это? Главное, что мне не нравится в приведенном выше решении, это то, что я не могу выдать ParameterBindingException
, как это сделали бы атрибуты проверки, поскольку это внутренний класс. Я мог бы выбросить ArgumentException
или PSArgumentException
, но это действительно для методов, а не для командлетов.