PowerShell中必需参数的默认值

Jon*_*nas 2 powershell

是否可以在函数中的必需参数上设置默认值?

它没有设置为强制性的...

IE浏览器.

Function Get-Hello {
    [CmdletBinding()]
        Param([Parameter(Mandatory=$true)]
              [String]$Text = $Script:Text
        )
    BEGIN {
    }
    PROCESS {
        Write-Host "$Script:Text"
        Write-Host "$Text"
    }
    END {
    }
}

$Text = "hello!"

Get-Hello
Run Code Online (Sandbox Code Playgroud)

问这个的原因是因为我有一个具有一些必需参数的函数,并且该函数完美地使用所需参数调用它,但我也希望能够在使用此函数的脚本中定义这些变量. "更好的可呈现和可编辑"方式以及能够在定义所需参数的情况下运行的功能.

因此,如果在脚本范围中定义它应该将其作为默认值,否则它应该提示该值.

提前致谢,

use*_*407 5

如果您定位到PowerShell V3 +,则可以使用$PSDefaultParameterValues首选项变量:

$PSDefaultParameterValues['Get-Hello:Text']={
    if(Test-Path Variable::Script:Text){
        # Checking that variable exists, so we does not return $null, or produce error in strict mode.
        $Script:Text
    }
}
Run Code Online (Sandbox Code Playgroud)