我希望我可以设置一个 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 #})
,但是我不会再让 Powershell 提示输入所需的值,不应该$Env:TEST_PARAM
存在。我只会得到一个验证错误。
所以这里有2个问题
- 为什么我什至可以将脚本块分配给 Mandatory 如果它似乎没有被尊重?
- 给定我指定的标准,是否有一种简单的方法来获取默认的 PS 提示行为?