是否可以在函数中的必需参数上设置默认值?
没有将其设置为强制性...
即
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
问这个的原因是因为我有一个具有一些必需参数的函数,并且该函数在使用所需参数调用它时非常完美,但我也想让这些变量可以在使用它的脚本中定义在更好的表现和...中的功能可编辑的"方法以及能够在定义所需参数的情况下运行的功能。
因此,如果在脚本范围中定义,则应该将其作为默认值,否则它应该提示该值。
先谢谢,
答案 0 :(得分: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
}
}