我正在尝试将 ValidateSet 与布尔参数一起使用,但是我无法使其按预期运行。
复制问题的示例:
function Set-Boolean
{
[CmdletBinding()]
[OutputType([Bool])]
Param
(
[Parameter(Mandatory=$true, Position=0)]
[ValidateNotNullOrEmpty()]
[ValidateSet($false,$true)]
[Bool] $Bool
)
Process
{
$Bool
}
}
在运行时,PowerShell在选项卡完成时将$true和变量分别扩展为 和,但这会导致参数验证失败,因为只有、和是有效的布尔类型。$falseTrueFalse$true$false10
我尝试将 ValidateSet 更改为[ValidateSet('$false','$true')]并且选项卡完成按预期工作,但是参数验证仍然失败,因为参数需要字符串'$false'和'$true'.
我可以将 ValidateSet 更改为并使其按预期运行,[ValidateSet([bool]0,[bool]1)]但我发现在完成布尔参数时0用户1体验较差。$true$false
函数的预期输出应该是True什么时候$true被选中,False什么时候$false被选中。
我已经在我的代码中实现了一个解决方法,但我想知道如何使用带有布尔参数的 ValidateSet(如果可能的话)来为用户启用制表符补全功能。
