我希望我可以设置一个 cmdlet,以便它可以使用环境变量作为参数值(如果存在),或者以其他方式提示。
function Test-Mandatory
{
[CmdletBinding()]
param(
[Parameter(Mandatory = { [string]::IsNullOrEmpty($Env:TEST_PARAM) })]
[string]
$foo = $Env:TEST_PARAM
)
Write-Host $foo
}
不幸的是,似乎无论我是否设置了
$Env:TEST_PARAM
,cmdlet 总是提示输入 $foo。我可以重新进行验证以使用
[ValidateScript({ #snip #})
,但是如果 $Env:TEST_PARAM
不存在,我将不会再收到 Powershell 提示输入所需值的信息。我只会得到一个验证错误。所以这里有2个问题
最佳答案
仅供引用,这是微软不得不说的:
关于validation - 使用 ScriptBlock 作为 Mandatory 的确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12623749/