CmdletBindingAttribute之PostionalBinding的作用

在上一篇讲完Advanced Function中的HelpURI之后,我们今天接着要说的是另一个新特性:“PositionalBinding”。

 

从字面上理解PostionalBinding就是位置参数绑定的意思,PositionalBinding参数是用来决定方法中参数的位置,它可以设置为$true或者$false。接下来让我们看看他在Function中的具体作用。

Function Test-Positional
{
    [CmdletBinding()]
    Param
    (
        [Parameter()]
        $StringData1,
        [Parameter()]
        $StringData2
    )

    Write-Host -Object $StringData1
    Write-Host -Object $StringData2
}

Test-Positional "A" "B"

如上例子,我们按照以往定义一个Function一样,对这个函数进行以往的操作,即便没有键入参数名也没有得到任何错误。

再来,让我们看看配合使用PositionalBinding的设置后的情况,将PositionalBinding设置为$False就意味着你将不需要位置参数的绑定。

Function Test-Positional
{
    [CmdletBinding(PositionalBinding=$False)]
    Param
    (
        [Parameter()]
        $StringData1,
        [Parameter()]
        $StringData2
    )

    Write-Host -Object $StringData1
    Write-Host -Object $StringData2
}

Test-Positional "A" "B"

由于设置了不绑定位置参数的关系,而我们又没有设定Position,所以当你在没有键入参数名的情况下,方法就提示找不到参数名所匹配的位置了,也就是说如果设置为$False后,我们必须强制指定参数名才行。

Test-Positional : A positional parameter cannot be found that accepts argument 
'A'.
At line:16 char:1
+ Test-Positional "A" "B"
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Positional], Paramete 
   rBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Test-Positional


所以,当设定不绑定参数位置的时候,我们只能指定其每个参数的位置才能避免方法能顺利匹配所对应的参数值。

Function Test-Positional
{
    [CmdletBinding(PositionalBinding=$False)]
    Param
    (
        [Parameter(Position=0)]
        $StringData1,
        [Parameter(Position=1)]
        $StringData2
    )

    Write-Host -Object $StringData1
    Write-Host -Object $StringData2
}

Test-Positional "A" "B"


如果在没有指定参数位置的情况下,当然也可以强制手动输入参数名的方式来执行。

Function Test-Positional
{
    [CmdletBinding(PositionalBinding=$False)]
    Param
    (
        [Parameter()]
        $StringData1,
        [Parameter()]
        $StringData2
    )

    Write-Host -Object $StringData1
    Write-Host -Object $StringData2
}

Test-Positional -StringData1 "A" -StringData2 "B"




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值