【发布时间】:2014-02-08 01:13:24
【问题描述】:
我一直在尝试寻找答案,但我认为将 PowerShell 和参数这两个词放在一组关键字中并不容易搜索
我的问题是,我正在编写一个函数,并且我提供了一个参数,但该参数必须是特定字符串列表之一。
有没有一种方法可以在脚本中提供这些字符串,这样如果我输入“myfunction -parameter ..”,我就可以对参数值使用制表符补全?
【问题讨论】:
标签: powershell parameters
我一直在尝试寻找答案,但我认为将 PowerShell 和参数这两个词放在一组关键字中并不容易搜索
我的问题是,我正在编写一个函数,并且我提供了一个参数,但该参数必须是特定字符串列表之一。
有没有一种方法可以在脚本中提供这些字符串,这样如果我输入“myfunction -parameter ..”,我就可以对参数值使用制表符补全?
【问题讨论】:
标签: powershell parameters
如果您使用的是 PowerShell V2,则可以使用 [ValidateSet()] 属性,例如:
param(
[Parameter()]
[ValidateSet('foo','bar','baz')]
[string[]]
$Item
)
通过执行查看帮助主题:
man about_functions_advanced_parameters
【讨论】:
您可以使用[ValidateSet()],正如 Keith 所演示的那样,但这不适用于大量可能的值(当您点击 Tab 时填充列表变得非常慢)。另一种获得制表符完成的方法是制作自定义枚举:
http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx
并将参数转换为该枚举类型。这确实对字符串中允许的字符集(基本上只是字母和数字)施加了一些限制,但如果它是一个相对较大的值列表,它将更快地填充制表符完成列表。
【讨论】: