我想为参数提供一个允许的名称列表name
,以便用户可以tab
输入它们。我想出了以下几点:
Param(
[ValidateSet([foo])]
[string]$Name
)
$name
Class foo : System.Management.Automation.IValidateSetValuesGenerator{
[string[]] GetValidValues(){
return [string[]] ("cat", "dog", "fish")
}}
建议输入.\myScript.ps1 -name
然后不按任何内容。运行会返回错误:tab
.\myScript.ps1
Line |
3 | [ValidateSet([foo])]
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Unable to find type [foo].
我可以在文件中或仅将其作为标准函数进行精确设置psm1
,而且它可以正常工作。我曾考虑将类移至脚本文件的顶部,但由于param()
需要将其放在第一行,因此不允许这样做。
有办法解决这个问题吗?我在用 pwsh 7.4