Проверка параметров командлета PowerShell

Я пишу собственный командлет PowerShell, и я хотел бы знать, какой способ является правильным для проверки параметра.
Я подумал, что это можно сделать либо с помощью средства доступа к набору свойств, либо во время выполнения командлета:

[Cmdlet(VerbsCommon.Add,"X")]
public class AddX : Cmdlet {

    private string _name;

    [Parameter(
        Mandatory=false,
        HelpMessage="The name of the X")]
    public string name {
        get {return _name;}
        set {
            // Should the parameter be validated in the set accessor?
            if (_name.Contains(" ")) { 
                // call ThrowTerminatingError
            }
            _name = value;
        }
    }

    protected override void ProcessRecord() {
        // or in the ProcessRecord method?
        if (_name.Contains(" ")) {
            // call ThrowTerminatingError
        }
    }
}

Какой «стандартный» подход? Установщик свойств, ProcessRecord или что-то совсем другое?


person Paolo Tedesco    schedule 08.10.2009    source источник


Ответы (1)


Если возможно, предпочтительно, чтобы параметры проверялись средой выполнения, указав Атрибуты проверки в определении параметра.

Windows PowerShell может проверять аргументы, переданные параметрам командлета, несколькими способами. Windows PowerShell может проверять длину, диапазон и шаблон символов аргумента. Он может проверить количество доступных аргументов (количество).

person Scott Saad    schedule 08.10.2009