我一直在尝试寻找答案,但我认为将PowerShell和参数这些词放在关键字组合中并不容易搜索。
我的问题是,我正在编写一个函数,我提供了一个参数,但该参数必须是特定字符串列表中的一个。
是否有一种方法可以在脚本中提供这些字符串,以便如果我键入“ myfunction-parameter ..”,我可以使用制表符完成参数值?
我一直在尝试寻找答案,但我认为将PowerShell和参数这些词放在关键字组合中并不容易搜索。
我的问题是,我正在编写一个函数,我提供了一个参数,但该参数必须是特定字符串列表中的一个。
是否有一种方法可以在脚本中提供这些字符串,以便如果我键入“ myfunction-parameter ..”,我可以使用制表符完成参数值?
如果你正在使用PowerShell V2,你可以使用[ValidateSet()]
属性,例如:
param(
[Parameter()]
[ValidateSet('foo','bar','baz')]
[string[]]
$Item
)
通过执行以下命令查看帮助主题:
See the help topic by executing:
man about_functions_advanced_parameters
[ValidateSet()]
,但是当可能的值很多时,这种方法效果不佳(在按Tab键时填充列表会变得非常缓慢)。另一种获取选项卡完成的方法是创建自定义枚举:https://devblogs.microsoft.com/powershell/v2-custom-enums/,并将参数强制转换为该枚举类型。这对于允许在字符串中使用的字符集施加了一些限制(基本上只有字母和数字),但如果它是一个相对较大的值列表,则会更快地填充选项卡完成列表。