PowerShell中使用正则和ValidateSet验证参数合法性(正则表达式提取字段)干货满满

随心笔谈9个月前发布 admin
169 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章讨论了在PowerShell中如何通过参数验证和类型转换来确保函数参数的有效性。文章主要介绍了以下内容: 1. **参数验证方法**:文章介绍了通过`ValidatePattern`、`ValidateSet`和内置类型(如`System.DayOfWeek`)来验证参数的方法。这些方法能够确保用户输入的值符合预期。 2. **异常处理**:文章提到如果使用`ValidatePattern`或`ValidateSet`,在参数不匹配时,Powershell会抛出友好的异常信息并提供智能提示。 3. **枚举类型**:文章强调了使用`System.DayOfWeek`枚举类型的重要性,因为它不仅限定了参数的值范围,还提供了一种更直观和方便的方式进行类型转换。 总结:文章强调了参数验证在PowerShell函数开发中的重要性,并提供了多种方法供开发者选择,以确保函数参数的正确性和一致性。



适用于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)相关命令linux shell实现随机数几种方法分享(date,random,uuid)PowerShell中iso8601格式日期和DateTime对象互转实例Shell脚本实现随机数多种方法介绍(date、random、uuid)Powershell小技巧之使用Update-TypeData扩展类型系统PowerShell中使用Get-Date获取日期时间并格式化输出的例子PowerShell中Get-Date对象的常用属性和方法介绍shell语言date的用法实例

© 版权声明

相关文章