PowerShell中使用正則和ValidateSet驗(yàn)證參數(shù)合法性
適用于PowerShell 2.0或著更高版本
當(dāng)你使用PowerShell 創(chuàng)建了一個(gè)函數(shù)時(shí),要確保你告訴PowerShell 你的參數(shù)期望什么樣的值。比如你想用戶輸入星期
function Get-Weekday
{
param
(
$Weekday
)
"You chose $Weekday"
}
此時(shí)用戶可以輸入任何值,即使這個(gè)值不是一個(gè)合法的星期,比如星期七
PS> Get-Weekday -Weekday NoWeekday
You chose NoWeekday
也許你之前還見過正則表達(dá)式類型的驗(yàn)證方式:
function Get-Weekday
{
param
(
[ValidatePattern('Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday')]
$Weekday
)
"You chose $Weekday"
}
現(xiàn)在一旦用戶輸入的字符串與你指定的模式不匹配時(shí),Powershell會(huì)拋出一個(gè)異常,但是這個(gè)異常信息不夠友好。在輸出參數(shù)時(shí),控制臺(tái)或著ISE編輯器也不能智能提示:
所以更好的方式應(yīng)當(dāng)是使用ValidateSet:
function Get-Weekday
{
param
(
[ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
$Weekday
)
"You chose $Weekday"
}
現(xiàn)在用戶在輸出參數(shù)時(shí)被限定在你規(guī)定的值集合中,另外在ISE中還會(huì)智能提示用戶允許的值列表。如果你能在.NET的類型中找到一個(gè)枚舉值剛好描述你需要的參數(shù),那就更易如反掌了:
function Get-Weekday
{
param
(
[System.DayOfWeek]
$Weekday
)
"You chose $Weekday"
}
相關(guān)文章
PowerShell小技巧之同時(shí)使用可選強(qiáng)制參數(shù)
本文主要講訴了在腳本函數(shù)中讓可選參數(shù)和強(qiáng)制參數(shù)必須同時(shí)使用,有需要的朋友可以參考下。2014-09-09Powershell小技巧之創(chuàng)建短網(wǎng)址
短網(wǎng)址服務(wù),可能很多朋友都已經(jīng)不再陌生,特別是在微博應(yīng)用中十分普遍,比如,當(dāng)我們?cè)隍v訊、新浪微博發(fā)微博時(shí)有時(shí)發(fā)很長的網(wǎng)址連接,但由于微博只限制140個(gè)字,所以微博就自動(dòng)把您發(fā)的長網(wǎng)址給轉(zhuǎn)換成短網(wǎng)址了。今天我們來探討下,如何用powershell來便捷的使用短網(wǎng)址2014-10-10Powershell小技巧之查看安裝的.Net framework版本信息
本文主要介紹了使用powershell查看安裝的.net framework的版本信息,非常簡單使用,有需要的朋友參考下2014-09-09Powershell Profiles配置文件的存放位置介紹
這篇文章主要介紹了Powershell Profiles配置文件的存放位置介紹,Profiles文件存放的位置不同,它的作用域也會(huì)不同,需要的朋友可以參考下2014-08-08Powershell小技巧之非相同域或信任域也能遠(yuǎn)程
這篇文章主要介紹了使用Powershell在非相同域或信任域也能遠(yuǎn)程的方法以及如何設(shè)置powershell遠(yuǎn)程處理的方法,需要的朋友可以參考下2014-10-10powershell遠(yuǎn)程管理服務(wù)器磁盤空間的實(shí)現(xiàn)代碼
這篇文章主要介紹了powershell遠(yuǎn)程管理服務(wù)器磁盤空間的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-11-11PowerShell調(diào)用Web測試工具Selenium實(shí)例
這篇文章主要介紹了PowerShell調(diào)用Web測試工具Selenium實(shí)例,又一篇PowerShell操作網(wǎng)頁的例子,需要的朋友可以參考下2014-07-07