如何为自定义PowerShell命令实现基于输入字符的自动补全
修复PowerShell自定义参数自动补全功能
你的代码存在两个关键问题,导致自动补全无法正常工作:
- 字符串数组
('abcd', 'efg')的元素是纯字符串,不存在.Name属性,Where-Object里的$_.Name会返回空值,无法匹配输入内容 - 变量
$WordToComplete的大小写与参数定义的$wordToComplete不一致(虽PowerShell默认不区分变量大小写,但保持一致更规范)
修正后的代码如下:
$customName = { param ($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParams) # 直接对字符串元素做前缀匹配 ('abcd', 'efg') | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { $_ } } Register-ArgumentCompleter -CommandName xstart -ParameterName blueprintName -ScriptBlock $customName
使用效果:
运行上述代码后,输入xstart ab并按下Tab键,会自动补全为xstart abcd;输入xstart e并按Tab,会补全为xstart efg。
内容的提问来源于stack exchange,提问作者Suhaib
相关产品推荐
相关产品推荐

