Pregunta

Estoy escribiendo un cmdlet de PowerShell personalizado y me gustaría saber cuál es la forma correcta de validar un parámetro.
Pensé que esto podría hacerse en el descriptor de acceso del conjunto de propiedades o durante la ejecución del cmdlet:

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

¿Cuál es el enfoque "estándar"?¿Establecedor de propiedades, ProcessRecord o algo completamente diferente?

¿Fue útil?

Solución

Si es posible, se prefiere que los parámetros sean validados por el tiempo de ejecución especificando Atributos de validación en la definición de parámetros.

Windows PowerShell puede validar los argumentos pasados ​​a los parámetros del cmdlet de varias maneras.Windows PowerShell puede validar la longitud, el rango y el patrón de los caracteres del argumento.Puede validar la cantidad de argumentos disponibles (el recuento).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top