我正在學習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自定義錯誤消息。然後我希望有人能解釋爲什麼我不得不喜歡第一種方法。提前致謝。
我也會說,來自ValidateSet的錯誤信息比任何你可以做的事都要友好得多。如果您的用戶使用PowerTab Plus Plus,則ValidateSet會添加一些選項卡擴展功能。 – JasonMArcher 2011-03-29 04:33:17
謝謝你veru很多stej。你的解釋很清楚。我閱讀了這個鏈接,但它不符合我目前的知識。再次感謝 :) – 2011-03-29 09:19:59