为参数的值启用选项卡自动完成,同时仍接受不同的值

时间:2018-01-13 19:59:46

标签: powershell parameter-passing

我想为参数使用一组预定义值,以便可以使用标签自动完成,而我仍然可以将不同的值传递给该参数。

到目前为止,我访问过的所有网页都提到了ValidateSetDynamicParam,或者提供了自定义枚举,但它没有解决我想要的问题。假设我有:

function test {
    Param(
        [ValidateSet("Paris", "London", "Madrid", "Berlin")]
        $city
    )
}

但是,如果我想运行test -city Rome

,该怎么办?

是否有办法同时完成标签的完成(通过“巴黎”,“伦敦”,“马德里”和“柏林”)以及允许传递另一个值的灵活性? 也许捕获相应的异常并在catch块中将其传递给参数?如果是这样,怎么办呢?

1 个答案:

答案 0 :(得分:0)

您可以定义自定义ArgumentCompleter而不是ValidateSet

function test
    { Param (
    [ArgumentCompleter( {@( "Paris","London","Madrid","Berlin" ) -like $args[2] + '*'})]
    $city)
}

您也可以将其与ValidateScript结合使用,不确定ValidateSet