如何为Cmdlet参数设置常用可选值列表并允许自定义输入?
需求可行,以下是实现方法
直接用[ValidateSet()]会严格限制输入范围,要同时实现提供常用选项补全和允许自定义输入,可以改用[ArgumentCompleter()]属性:
- 该属性仅提供输入补全提示,不会限制用户输入任意合法值
- 你可以在补全器中预定义常用的稳定构建路径,用户按Tab键就能快速选择
- 用户依然可以手动输入其他任意构建路径,不会被拦截
示例代码:
function Invoke-Build { [CmdletBinding()] param( [Parameter(Mandatory)] [ArgumentCompleter({ # 这里定义常用的稳定构建版本路径 @('D:\Builds\Stable\VersionA', 'D:\Builds\Stable\VersionB') })] [string]$BuildPath ) Write-Output "当前使用的构建路径: $BuildPath" }
使用说明:
- 执行
Invoke-Build -BuildPath后按Tab键,会自动弹出预定义的两个路径选项 - 直接输入其他路径(比如
E:\MyCustomBuild\V2.0)也能正常执行,不会报错
内容的提问来源于stack exchange,提问作者deetle
相关产品推荐
相关产品推荐

