如何定义带有可选值的参数?

时间:2019-03-27 12:54:09

标签: string powershell parameters return-value

我正在尝试创建一个函数,该函数具有字符串类型的参数(Para2),并分配了值(“ ABC”)。当仅调用参数时,应使用该值。如果参数附带值,则应改用该值。 但是我不知道该怎么办。我卡住了,请您帮忙。

我玩过AllowEmptyString和其他ValidationSets,但未成功。这是我到目前为止的内容:

Function MyFunction {

    [CmdletBinding (
        PositionalBinding = $false,
        DefaultParameterSetName = "MySet1"
    )]

    Param (

        [Parameter(ParameterSetName = "MySet1")]
        [string]$Para1 = "Para1 default",

        [Parameter(ParameterSetName = "MySet1")]
        [string]$Para2 = "ABC"

    )

    Write-Output $Para2

}

MyFunction -Para2 "xxx"

调用“ MyFunction -Para2“ xxx”“之类的函数将重新运行“ xxx”-这是预期的。 我想找到一种方法来调用“ MyFunction -Para2”之类的函数,并希望将“ ABC”作为返回值。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以按照TheIncorrigle1的说明进行操作,但是如果输入变量可能为空,则还可以使用以下内容:

function MyFunction{
    [CmdletBinding(
        PositionalBinding = $false,
        DefaultParameterSetName = "MySet1"  
    )]
    param(
        [Parameter(ParameterSetName = "MySet1")]
        [string]$Para1 = "Para1 default",

        [Parameter(ParameterSetName = "MySet1")]
        [string]$Para2 = $para2
    )
    if(!$Para2){
        Write-Output "ABC"
    }else{
        Write-Output $Para2
    }
}

MyFunction -Para2 ""

这样,如果在-Para2之后放置了某些内容,则将成为输出,如果输入为空或$ null,则将输出“ ABC”。

我还对脚本进行了一些格式化,以使其更具可读性。 《 PowerShell脚本指南》提供了一些建议,可始终确保您的脚本具有可读性和可维护性。

希望这会有所帮助!

可能通过评论解决您的问题:

try{
    MyFunction -Para2
}catch{
    MyFunction -Para2 ""
}