PowerShell中使用正则和ValidateSet验证参数合法性
适用于PowerShell2.0或着更高版本
当你使用PowerShell创建了一个函数时,要确保你告诉PowerShell你的参数期望什么样的值。比如你想用户输入星期
functionGet-Weekday
{
param
(
$Weekday
)
"Youchose$Weekday"
}
此时用户可以输入任何值,即使这个值不是一个合法的星期,比如星期七
PS>Get-Weekday-WeekdayNoWeekday YouchoseNoWeekday
也许你之前还见过正则表达式类型的验证方式:
functionGet-Weekday
{
param
(
[ValidatePattern('Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday')]
$Weekday
)
"Youchose$Weekday"
}
现在一旦用户输入的字符串与你指定的模式不匹配时,Powershell会抛出一个异常,但是这个异常信息不够友好。在输出参数时,控制台或着ISE编辑器也不能智能提示:
所以更好的方式应当是使用ValidateSet:
functionGet-Weekday
{
param
(
[ValidateSet('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')]
$Weekday
)
"Youchose$Weekday"
}
现在用户在输出参数时被限定在你规定的值集合中,另外在ISE中还会智能提示用户允许的值列表。如果你能在.NET的类型中找到一个枚举值刚好描述你需要的参数,那就更易如反掌了:
functionGet-Weekday
{
param
(
[System.DayOfWeek]
$Weekday
)
"Youchose$Weekday"
}
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下