PowerShell介绍 第十三回 定义参数

来源:互联网 发布:vb软件下载 编辑:程序博客网 时间:2024/06/16 05:33

经常看到一些脚本可以接受某种形式的输入所, 输入的可能是一个计算机名称、 文件路径等等。曾经我会觉得很神奇,但是现在我已经知道怎么去定义一个参数了。下面我们就来一起学习学习吧。

其实,也挺简单的,用到的就是一下句子:

Param( [string]$computerName, [string]$filePath)

可以定义多个接受输入的参数,中间使用逗号隔开,前面可以加[string]等限定输入的类型。

此外,它还可以定义更多的属性,例如:

Param(
            [parameter(Mandatory=$true,
            ValueFromPipeline=$true)]
            [String[]]
            $ComputerName
          ) 
[parameter(Mandatory=$true意思是它是必需的;ValueFromPipeline=$true)意思是它接受管道输入; [String[]意思是它接受字符串数组输入。
parameter的属性有许多种,下面一一列举说明:

1. 必须命名参数

[parameter(Mandatory=$true)]
必需实际参数表示在函数运行时形式参数是必需的。如果未指定此实际参数,则形式参数是可选的。

2. 位置命名参数

[parameter(Position=0)]
位置实际参数指定形式参数的位置。如果未指定此实际参数,则在设置形式参数时必须明确指定该形式参数的名称或别名。

3. ParameterSetName 命名参数

ParameterSetName 实际参数指定形式参数所属的形式参数集。如果未指定参数集,则参数属于函数定义的所有参数集。此行为意味着每个参数集必须有一个不属于任何其他参数集的唯一参数。以下示例显示了属于两个不同参数集的两个参数的参数声明。
        Param
          (
            [parameter(Mandatory=$true,
                      ParameterSetName="Computer")] [String[]]
            $ComputerName
          ) 

        Param
          (
            [parameter(Mandatory=$true,
                      ParameterSetName="User")] [String[]]
            $UserName
          ) 

4. ValueFromPipeline 命名参数

ValueFromPipeline 实际参数指定形式参数通过管道对象接受输入。

5. ValueFromPipelineByPropertyName 命名参数

valueFromPipelineByPropertyName 实际参数指定形式参数通过管道对象的属性接受输入。

6. ValueFromRemainingArguments 命名参数

ValueFromRemainingArguments 实际参数指定形式参数接受未绑定到函数形式参数的其余所有实际参数。

7. HelpMessage 命名参数

HelpMessage 实际参数指定包含对形式参数的简短说明的消息。例如:
Param
          (
            [parameter(Mandatory=$true,
                      HelpMessage="this is An array of computer names")] 
                      [String[]]
            $ComputerName
          ) 

8. Alias 属性

Alias 属性为参数指定另一个名称。可分配给参数的别名数目没有限制。例如:
Param
          (
            [parameter(Mandatory=$true)]
            [alias("CN")]
            [String[]]
            $ComputerName
          ) 
以上8种参数属于静态参数,另外还有一种参数叫做验证性参数,这些属性定义 Windows PowerShell 运行时如何验证高级函数的参数。例如:

9. AllowNull 验证属性

 AllowNull 属性允许将 cmdlet 必需形式参数的实际参数设置为 Null。例如:
Param
          (
            [parameter(Mandatory=$true)]
            [String]
            [AllowNull()]
            $ComputerName
          ) 

10. AllowEmptyString 验证属性

AllowEmptyString 属性允许将空字符串作为 cmdlet 必需形式参数的实际参数。

11. AllowEmptyCollection 验证属性

AllowEmptyCollection 属性允许将空集合作为必需形式参数的实际参数。

12. ValidateCount 验证属性

ValidateCount 属性指定形式参数可接受的实际参数的最小和最大数目。如果实际参数的数目超出该范围,则 Windows PowerShell 运行时会生成错误。例如:
 Param
          (
            [parameter(Mandatory=$true)]
            [String[]]
            [ValidateCount(1,5)]
            $ComputerName
          ) 

13. ValidateLength 验证属性

ValidateLength 属性指定形式参数的实际参数的最小和最大长度。如果形式参数的实际参数的长度超出该范围,则 Windows PowerShell 运行时会生成错误。

14. ValidatePattern 验证属性

ValidatePattern 属性指定对形式参数的实际参数模式进行验证的正则表达式。如果形式参数的实际参数与此模式不匹配,则 Windows PowerShell 运行时会生成错误。例如:
Param
          (
            [parameter(Mandatory=$true)]
            [String[]]
            [ValidatePattern("[0-9][0-9][0-9][0-9]")] $ComputerName
          ) 
说明:形式参数的实际参数必须是一个四位数,并且每一位必须是 0 到 9 中的一个数字。

15. ValidateRange 验证属性

ValidateRange 属性指定形式参数的实际参数的最小值和最大值。如果形式参数的实际参数超出该范围,则 Windows PowerShell 运行时会生成错误。

16. ValidateScript 验证属性

ValidateScript 属性指定用于对形式参数的实际参数进行验证的脚本。如果脚本结果为 false 或脚本引发异常,则 Windows PowerShell 运行时会生成错误。例如:
 Param
          (
            [parameter()]
            [Int]
            [ValidateScript({$_ -lt 4})]
            $Count
          ) 
说明:Count 参数的值必须小于 4。

17. ValidateNotNull 验证属性

ValidateNotNull 属性指定形式参数的实际参数不能设置为 Null。如果参数值为 Null,则 Windows PowerShell 运行时会生成错误。

18. ValidateNotNullOrEmpty 验证属性

ValidateNotNullOrEmpty 属性指定形式参数的实际参数不能设置为 Null,也不能为空。如果指定了参数,但参数值为 Null、空字符串或空数组,则 Windows PowerShell 运行时会生成错误。

说了那么多,最后上一个超级简单的例子吧。
param($logpath="D:\test")Get-childItem -path $logpath -recurse;
最后运行的效果是这样的:

就这么简单,定义了一个可接受输入的参数logpath。

















0 0
原创粉丝点击