Frage

Ich schreibe einen benutzerdefinierten PowerShell CMDLet und möchte wissen, welches der richtige Weg ist, um einen Parameter zu validieren.
Ich dachte, dass dies entweder im Eigenschafts -Set -Accessor oder während der CMDLet -Ausführung erfolgen könnte:

[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
        }
    }
}

Welches ist der "Standard" -Ansatz? Eigenschaft Setter, ProcessRecord oder etwas völlig anderes?

War es hilfreich?

Lösung

Wenn möglich, wird vorgezogen, dass die Parameter von der Laufzeit durch Angabe validiert werden Validierungsattribute Auf der Parameterdefinition.

Windows PowerShell kann die Argumente validieren, die an CMDLet -Parameter auf verschiedene Weise übergeben wurden. Windows PowerShell kann die Länge, den Bereich und das Muster der Zeichen des Arguments validieren. Es kann die Anzahl der verfügbaren Argumente (die Anzahl) validieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top