PowerShell中使用正则和ValidateSet验证参数合法性
适用于PowerShell 2.0或着更高版本
当你使用PowerShell 创建了一个函数时,要确保你告诉PowerShell 你的参数期望什么样的值。比如你想用户输入星期
function Get-Weekday { param ( $Weekday ) "You chose $Weekday" }
此时用户可以输入任何值,即使这个值不是一个合法的星期,比如星期七
PS> Get-Weekday -Weekday NoWeekday You chose NoWeekday
也许你之前还见过正则表达式类型的验证方式:
function Get-Weekday { param ( [ValidatePattern('Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday')] $Weekday ) "You chose $Weekday" }
现在一旦用户输入的字符串与你指定的模式不匹配时,Powershell会抛出一个异常,但是这个异常信息不够友好。在输出参数时,控制台或着ISE编辑器也不能智能提示:
所以更好的方式应当是使用ValidateSet:
function Get-Weekday { param ( [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')] $Weekday ) "You chose $Weekday" }
现在用户在输出参数时被限定在你规定的值集合中,另外在ISE中还会智能提示用户允许的值列表。如果你能在.NET的类型中找到一个枚举值刚好描述你需要的参数,那就更易如反掌了:
function Get-Weekday { param ( [System.DayOfWeek] $Weekday ) "You chose $Weekday" }
Windows PowerShell是啥?看完本文你就懂它了
引子一直很羡慕Linux的命令提示符(当然他们叫Shell)。正则表达式,管道,各种神奇的命令,组合起来就能高效完成很多复杂的任务。效率实在是高。
PowerShell DSC组件 xExchange 发布
随着xExchangePowerShellDSCResourceModule的发布,部署和配置一个很复杂的产品将会变得非常容易.在IntroducingthexExchangeModuleforPowershellDesiredStateConfiguration这篇文章
PowerShell实现时间管理小秘书
引言是不是觉得同样是活着,别人为啥就能做这么多事呢?是不是经常8小时班上下来,却不晓得自己干了些啥?是不是习惯于在Email,BBS,GoogleReader间切换
标签:参数,用户,就能,星期,异常