PowerShell参数值列表

k7fdbhmy  于 2022-12-13  发布在  Shell
关注(0)|答案(2)|浏览(123)

我一直在尝试搜索答案,但我认为将PowerShell和parameter放在一组关键字中并不容易搜索
我的问题是,我在写一个函数,我提供了一个参数,但是这个参数必须是一个特定的字符串列表中的一个。
是否有一种方法可以在脚本中提供这些字符串,以便在键入“myfunction -parameter..”时可以对参数值使用制表符完成?

n3ipq98p

n3ipq98p1#

如果您使用的是PowerShell V2,则可以使用[ValidateSet()]属性,例如:

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

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

man about_functions_advanced_parameters
j0pj023g

j0pj023g2#

你可以像基思演示的那样使用[ValidateSet()],但是对于大量的可能值来说,这并不是很好的工作(当你点击Tab键时填充列表会变得非常慢)。另一个获得Tab键完成的方法是创建一个自定义枚举:
https://devblogs.microsoft.com/powershell/v2-custom-enums/
并将参数转换为该枚举类型。这确实对字符串中允许的字符集施加了一些限制(基本上只有字母和数字),但如果是一个相对较大的值列表,则填充制表符完成列表的速度会快得多。

相关问题