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

 更新时间:2015年04月11日 09:25:36   投稿:junjie  
这篇文章主要介绍了PowerShell中使用正则和ValidateSet验证参数合法性,本文分别给出了验证实例,讲解如何验证参数的正确性,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

适用于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使用管道

    Windows Powershell使用管道

    在Windows PowerShell中到处都会用到管道。尽管在屏幕上会看到文本,但Windows PowerShell并不通过管道在命令之间传递文本。它实际上通过管道传递对象。用于管道的表示法与其他shell中所使用的表示法十分类似,因此乍一看可能不会明显察觉到PowerShell引入了新功能
    2014-09-09
  • PowerShell ISE自动化简单示例

    PowerShell ISE自动化简单示例

    这篇文章主要介绍了PowerShell ISE自动化简单示例,本文给出了2个PowerShell ISE自动化例子,需要的朋友可以参考下
    2015-03-03
  • Windows Powershell 命令集 cmdlets

    Windows Powershell 命令集 cmdlets

    在Windows PowerShell中,需要使用cmdlet执行指令。一个cmdlet代表着可操作某一对象的功能命令,cmdlet可使用"动词-名词"形式的语法:一个动词和一个名词,中间使用连字符连接,例如get-service和start-service。
    2014-09-09
  • PowerShell中编程清空IE缓存方法

    PowerShell中编程清空IE缓存方法

    这篇文章主要介绍了PowerShell中编程清空IE缓存方法,本文代码同样适用于批处理程序,需要的朋友可以参考下
    2015-05-05
  • Powershell使用WINDOWS事件日志记录程序日志

    Powershell使用WINDOWS事件日志记录程序日志

    这篇文章主要介绍了Powershell使用WINDOWS事件日志记录程序日志,还可以分析你的日志和查询日志信息,需要的朋友可以参考下
    2014-07-07
  • PowerShell打开或关闭光驱

    PowerShell打开或关闭光驱

    这里给大家分享的是使用PowerShell实现打开或关闭光驱的小程序,大家也许根本用不到,这里只是个例子,让大家学习下如何操作windows API
    2015-09-09
  • PowerShell中把相对路径转换为绝对路径的2个方法

    PowerShell中把相对路径转换为绝对路径的2个方法

    这篇文章主要介绍了PowerShell中把相对路径转换为绝对路径的2个方法,并对他的区别做了讲解,需要的朋友可以参考下
    2014-08-08
  • PowerShell移动目录中指定文件的方法(非全部文件)

    PowerShell移动目录中指定文件的方法(非全部文件)

    这篇文章主要介绍了PowerShell移动目录中指定文件的方法,注意,本文讲解的并非移动全部文件,而是根据需求查询出的指定文件,需要的朋友可以参考下
    2014-08-08
  • WMI入门教程之WMI中的类在哪里?

    WMI入门教程之WMI中的类在哪里?

    这篇文章主要介绍了WMI入门教程之WMI中的类在哪里?本文讲解了WMI中类的层次结构、常用WMI类、WMI类查找手册等内容,需要的朋友可以参考下
    2014-10-10
  • 探索PowerShell(十三) WMI对象介绍

    探索PowerShell(十三) WMI对象介绍

    我记得在xp时代,经常使用的工具有一个叫做WMI Administrative Tools,是微软官方提供的用来查看、编辑WMI对象的,只是现在好似不支持新的系统了
    2012-12-12

最新评论

?


http://www.vxiaotou.com