PowerShell cmdlet parâmetro de validação
-
20-09-2019 - |
Pergunta
Eu estou escrevendo um personalizado cmdlet do PowerShell, e eu gostaria de saber qual é a maneira correta para validar um parâmetro.
Eu pensei que isso poderia ser feito na propriedade acessador set ou durante a execução do 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
}
}
}
O que é o "padrão" abordagem?Propriedade setter, ProcessRecord, ou algo completamente diferente?
Solução
Se possível, é preferível que os parâmetros que ser validada pelo tempo de execução, especificando Validação De Atributos sobre a definição do parâmetro.
O Windows PowerShell pode validar os argumentos passados para o cmdlet parâmetros de várias maneiras.O Windows PowerShell pode validar o comprimento, o intervalo e o padrão de caracteres do argumento.Ele pode validar o número de argumentos disponíveis (a contagem).