当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Powershell参数|了解参数的属性

作者:精品下载站 日期:2024-12-14 05:02:37 浏览:15 分类:玩电脑

Powershell参数|了解参数的属性


[玩转系统] Powershell参数|了解参数的属性

Powershell参数介绍

参数只不过是提供给函数或任何 cmdlet 的输入。每个参数都有一个名称和与其关联的数据类型。参数不一定是强制的。某些参数还可能具有默认值,并且当未明确提及参数的值时使用这些值。对于函数,参数是使用 Param 块定义的。强制参数使用 [Parameter (Mandatory)] 属性定义。还可以使用 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参数|了解参数的属性

上面显示了与 Out-File cmdlet 关联的各种参数。它还显示参数是否为强制参数、其位置、别名。

参数的属性

这是下面提到的参数的属性

-Required

这表示该参数是否是运行此 cmdlet 所必需的。如果某个参数的该值为 true,则表示这是强制参数。如果未传递该参数的适当值,则会引发错误。

-Position

位置参数是将其位置设置为正整数的参数。使用此类参数时,不需要参数名称,但必须在适当的位置提及参数值。如果位置值为 0,则不需要参数名称,但其值应该第一个出现在 cmdlet 名称之后。如果排除位置设置,则可以在 cmdlet 中的任何位置定义它。

-Type

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

-默认值

这表示未指定其他值时参数的默认值。对于必需的参数,永远没有默认值,并且始终由用户提供。对于许多可选参数来说,没有默认值,因为可选参数没有太大意义。

-接受多个值

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

-接受管道输入

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

-接受通配符

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

参数验证

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

1. 强制参数并允许空值

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

示例:

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

在上面,UserName 是一个强制参数,它接受 null 作为值。

2.AllowEmptyString验证属性

此属性用于允许空字符串作为强制参数的值。允许空集合属性用于允许空集合作为强制字符串参数的值。

示例:

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参数|了解参数的属性

结论——Powershell参数

因此,本文详细介绍了 PowerShell 中的参数。它涵盖了各种类型的参数、与参数相关的各种属性、不同的参数类型、强制和非强制参数、参数验证等。要详细了解参数,建议编写示例脚本并执行他们。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯