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