我一直在尝试搜索答案,但我认为在一组关键字中将PowerShell和参数放在一起并不能轻松进行搜索
我的问题是,我正在编写一个函数,并且我提供了一个参数,但该参数必须是特定字符串列表中的一个。
有没有办法可以在脚本中提供这些字符串,这样如果我输入“myfunction -parameter ..”,我可以使用制表符完成参数值吗?
答案 0 :(得分:22)
如果您使用的是PowerShell V2,则可以使用[ValidateSet()]
属性,例如:
param(
[Parameter()]
[ValidateSet('foo','bar','baz')]
[string[]]
$Item
)
执行以下命令查看帮助主题:
man about_functions_advanced_parameters
答案 1 :(得分:2)
您可以使用[ValidateSet()]
作为Keith演示,但这对于大量可能的值(当您点击Tab变得非常慢时填充列表)不能很好地工作。获取制表符的另一种方法是制作自定义枚举:
http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx
并将参数转换为枚举类型。这确实对字符串中允许的字符集(基本上只是字母和数字)施加了一些限制,但如果它是一个相对较大的值列表,它将更快地填充选项卡完成列表。