PowerShell中使用正则和ValidateSet验证参数合法性

2023-12-05 0 354

适用于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\”
}

您可能感兴趣的文章:

  • shell语言date的用法实例
  • Shell时间(date)相关命令
  • linux shell实现随机数几种方法分享(date,random,uuid)
  • PowerShell中iso8601格式日期和DateTime对象互转实例
  • Shell脚本实现随机数多种方法介绍(date、random、uuid)
  • Shell 中常用 Date 日期的计算

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PowerShell PowerShell中使用正则和ValidateSet验证参数合法性 https://www.u-9.cn/jiaoben/powershell/100939.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务