我一直在尝试搜索答案,但我认为将PowerShell和parameter放在一组关键字中并不容易搜索我的问题是,我在写一个函数,我提供了一个参数,但是这个参数必须是一个特定的字符串列表中的一个。是否有一种方法可以在脚本中提供这些字符串,以便在键入“myfunction -parameter..”时可以对参数值使用制表符完成?
n3ipq98p1#
如果您使用的是PowerShell V2,则可以使用[ValidateSet()]属性,例如:
[ValidateSet()]
param( [Parameter()] [ValidateSet('foo','bar','baz')] [string[]] $Item )
执行以下命令以查看帮助主题:
man about_functions_advanced_parameters
j0pj023g2#
你可以像基思演示的那样使用[ValidateSet()],但是对于大量的可能值来说,这并不是很好的工作(当你点击Tab键时填充列表会变得非常慢)。另一个获得Tab键完成的方法是创建一个自定义枚举:https://devblogs.microsoft.com/powershell/v2-custom-enums/并将参数转换为该枚举类型。这确实对字符串中允许的字符集施加了一些限制(基本上只有字母和数字),但如果是一个相对较大的值列表,则填充制表符完成列表的速度会快得多。
2条答案
按热度按时间n3ipq98p1#
如果您使用的是PowerShell V2,则可以使用
[ValidateSet()]
属性,例如:执行以下命令以查看帮助主题:
j0pj023g2#
你可以像基思演示的那样使用
[ValidateSet()]
,但是对于大量的可能值来说,这并不是很好的工作(当你点击Tab键时填充列表会变得非常慢)。另一个获得Tab键完成的方法是创建一个自定义枚举:https://devblogs.microsoft.com/powershell/v2-custom-enums/
并将参数转换为该枚举类型。这确实对字符串中允许的字符集施加了一些限制(基本上只有字母和数字),但如果是一个相对较大的值列表,则填充制表符完成列表的速度会快得多。