Powershell参数介绍

947 阅读2分钟

Powershell Parameter

Powershell参数简介

参数就是提供给函数或任何cmdlet的输入。每个参数都有一个名称和一个相关的数据类型。参数不一定是强制性的。有些参数也可能有默认值,当参数的值没有明确提到时,就使用这些值。对于一个函数,参数是用Param块定义的。强制性参数用[参数(强制性)]属性来定义。也可以使用ValidateSet属性来验证传递给每个参数的值。参数名称前面总是有一个连字符(-),这表示PowerShell认为(-)后面的字是一个参数。本文将详细介绍PowerShell中的参数及其类型,各种类型的参数,如何向函数传递参数等,详细说明。

Powershell参数的语法

下面的例子显示了如何向cmdlet传递参数

Get-ChildItem -Path “C:\vignesh\test

在上面的例子中,路径是cmdlet的一个参数,参数的相应值被括在""内。

要为一个函数定义参数,需要使用下面的格式

param(
[Parameter()] [string]$Testparameter1
[Parameter()] [string]$Testparameter2
[Parameter()] [int]$Testparameter3
)

识别与一个cmdlet相关的各种参数

要确定一个cmdlet的各种参数,可以使用下面的cmdlet。

Get-Help CmdletName -Parameter *

例子:

Get-Help out-file -Parameter *

输出:

powershell parameter output 1

上面显示了与Out-File cmdlet相关的各种参数。它还显示了一个参数是否是强制性的,它的位置,别名。

参数的属性

下面提到的是参数的属性

-要求

这表示该参数是否是运行该cmdlet所必须的。如果这个参数的值为真,那么它意味着这是一个强制性的参数。如果没有为该参数传递适当的值,将产生一个错误。

-位置

位置参数是指将其位置设置为一个正整数的参数。当使用这种类型的参数时,参数名称不是必需的,但参数值必须提到适当的位置。如果位置值为0,那么参数名称就不是必需的,但其值应该是出现在cmdlets名称之后的第一个。如果位置设置被排除在外,它可以在cmdlet的任何地方定义。

-类型

它表示参数的类型,如字符串、int、开关等。

-默认值

当没有指定其他值时,这表示参数的默认值。对于一个必需的参数,永远没有默认值,总是由用户提供。对于许多可选参数来说,没有默认值,因为可选参数没有什么意义。

-接受多个值

这表示一个参数是否可以接受多个值。如果允许多个值,则以逗号分隔的方式输入并传递,或者将这些值以逗号分隔的方式保存在一个变量中,该变量可以作为一个值传递给参数。

-接受管道输入

这表示管道是否可以作为输入传给参数。如果其值为false,表示参数不接受管道的输入。

-接受通配符字符

这表示该参数是否可以使用通配符来匹配字符。

参数的验证

以下是验证传递给参数的值的一些方法。

1.使参数成为强制性的并允许空值

强制性参数用于表示一个参数是否强制性地需要一个值。AllowNull属性是用来允许空值作为一个值。

例子:

Param(
[Parameter(Mandatory=$true)] [AllowNull()] [String] $UserName
)

在上面的例子中,UserName是一个强制性参数,它接受空值。

2.AllowEmptyString验证属性

这个属性用于允许空字符串作为强制性参数的值。Allow Empty collection属性用于允许空集合作为强制性字符串参数的值。

例子:

Param(
[Parameter(Mandatory=$true)] [AllowNull()] [AllowEmptyCollection()] [String] $UserName
)

ValidateCount属性用来验证可以传递给一个参数的值的数量。

ValidateLenght属性用于指定传递给一个参数的值的最小和最大长度。

Validatepattern用于将正则表达式与传递给参数的值相匹配。

ValdiateRange指定变量的值必须在一个范围内。

ValidateSet表示一组数值,其中一个数值必须被传递给参数。这个集合之外的值不能被设置为参数。

ValidateDrive用于验证一个路径参数的值是否在某个驱动器上。

例子:

Param(
[Parameter(Mandatory=$true)] [AllowNull()] [AllowEmptyCollection()] [ValidateCount(5,50)] [ValidateLength(10,20)] [ValidatePattern("[1-9][0-4][4-9][1-4]")] [ValidateDrive("C", "Function", "Drive")] [String] $UserName
)
Example:
Input:
Write-Host "Welcome to parameter example"
function test1()
{
Write-Host "Demo of function without any parameter"
Write-Host "Function without parameters is called"
}
#calling test1 function
test1
function test2($username)
{
Write-Host "Demo of Function with a single parameter"
Write-Host "the value of username supplied is" $username
}
#calling test2 function with parameter
test2 -username "Viki"
function test2
{
Param(
[parameter(Mandatory=$true)] [ValidateLength(1,30)] [String] $Name,
[parameter(Mandatory=$true)] [Int] $age,
[parameter(Mandatory=$true)] [ValidateSet("Chennai", "Mumbai", "Delhi")] [String] $City
)
Write-Host "Demo of fucntion with multiple parameters"
Write-Host "The name supplied is" $Name
Write-Host "the age supplied is "$age
Write-Host "The city passed is " $City
}
#function calling
test2 -Name "Vignesh" -age 28 -City Chennai
function test3
{
Param(
[parameter(position=1)] [ValidateLength(1,30)] [String] $Name,
[parameter(position=2)] [Int] $age,
[parameter(position=3)] [ValidateSet("Chennai", "Mumbai", "Delhi")] [String] $City
)
Write-Host "Demo of fucntion with Positional parameters"
Write-Host "The name supplied is" $Name
Write-Host "the age supplied is "$age
Write-Host "The city passed is " $City
}
#function calling
test3 "viki" 35 "Chennai"

输出:

powershell parameter output 2

结论 - Powershell参数

因此,这篇文章详细介绍了PowerShell中的参数。它涵盖了各种类型的参数,与参数相关的各种属性,不同的参数类型,强制性和非强制性的参数,参数的验证等。要想更详细地了解参数,最好是编写示例脚本并执行它们。