Я изучаю функции PowerShell и параметры его проверки.Однако я не могу понять, действительно ли они полезны.
Я приведу простой пример.
function get-choice(
[parameter(Mandatory=$true)][String][ValidateSet('Y','N')]$choice
)
{return $choice}
get-choice k
Эта функция возвращает мне эту ошибку:
get-choice : Impossibile convalidare l'argomento sul parametro 'choice'. L'argomento "k" non appartiene al set "Y,N" specificato dall'attributo ValidateSet. Fornire un argomento inclu
so nel set ed eseguire di nuovo il comando.
In riga:6 car:11
+ get-choice <<<< k
+ CategoryInfo : InvalidData: (:) [get-choice], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,get-choice
ЕслиЯ не указываю действительный набор значений, я могу проверить их в своем коде:
function get-choice2(
[parameter(Mandatory=$true)][String]$choice
) {
if($choice -ne 'y' -and $choice -ne 'n') {
write-host "you must choose between yes and no"
return
}
return $choice
}
get-choice2 k
и получаю более дружеское сообщение:
you must choose between yes and no
Прежде всего, я быХотелось бы узнать, возможно ли настроить сообщение об ошибке с помощью validateset.Тогда я надеюсь, что кто-то сможет объяснить, почему я должен предпочесть первый подход.Заранее спасибо.