PowerShell参数值列表

28

我一直在尝试寻找答案,但我认为将PowerShell和参数这些词放在关键字组合中并不容易搜索。

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

是否有一种方法可以在脚本中提供这些字符串,以便如果我键入“ myfunction-parameter ..”,我可以使用制表符完成参数值?

2个回答

51

如果你正在使用PowerShell V2,你可以使用[ValidateSet()]属性,例如:

param(
    [Parameter()]
    [ValidateSet('foo','bar','baz')]
    [string[]]
    $Item
)

通过执行以下命令查看帮助主题:

See the help topic by executing:

man about_functions_advanced_parameters

4
你可以像Keith演示的那样使用[ValidateSet()],但是当可能的值很多时,这种方法效果不佳(在按Tab键时填充列表会变得非常缓慢)。另一种获取选项卡完成的方法是创建自定义枚举:https://devblogs.microsoft.com/powershell/v2-custom-enums/,并将参数强制转换为该枚举类型。这对于允许在字符串中使用的字符集施加了一些限制(基本上只有字母和数字),但如果它是一个相对较大的值列表,则会更快地填充选项卡完成列表。

你有脚本内的代码示例吗?不确定它会如何工作。 - satvikpendem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接