我想为参数使用一组预定义值,以便可以使用标签自动完成,而我仍然可以将不同的值传递给该参数。
到目前为止,我访问过的所有网页都提到了ValidateSet
,DynamicParam
,或者提供了自定义枚举,但它没有解决我想要的问题。假设我有:
function test {
Param(
[ValidateSet("Paris", "London", "Madrid", "Berlin")]
$city
)
}
但是,如果我想运行test -city Rome
是否有办法同时完成标签的完成(通过“巴黎”,“伦敦”,“马德里”和“柏林”)以及允许传递另一个值的灵活性? 也许捕获相应的异常并在catch块中将其传递给参数?如果是这样,怎么办呢?
答案 0 :(得分:0)
您可以定义自定义ArgumentCompleter
而不是ValidateSet
:
function test
{ Param (
[ArgumentCompleter( {@( "Paris","London","Madrid","Berlin" ) -like $args[2] + '*'})]
$city)
}
您也可以将其与ValidateScript
结合使用,不确定ValidateSet
。