PowerShell参数值列表

时间:2014-02-08 01:13:24

标签: powershell parameters

我一直在尝试搜索答案,但我认为在一组关键字中将PowerShell和参数放在一起并不能轻松进行搜索

我的问题是,我正在编写一个函数,并且我提供了一个参数,但该参数必须是特定字符串列表中的一个。

有没有办法可以在脚本中提供这些字符串,这样如果我输入“myfunction -parameter ..”,我可以使用制表符完成参数值吗?

2 个答案:

答案 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

并将参数转换为枚举类型。这确实对字符串中允许的字符集(基本上只是字母和数字)施加了一些限制,但如果它是一个相对较大的值列表,它将更快地填充选项卡完成列表。