PowerShell 提供输入自动补全功能,以提供提示、启用发现和加快条目输入速度。 按下 Tab 键,可以完成命令名称、参数名称、参数值和文件路径的输入。
Tab 键是 Windows 上的默认键绑定。
PSReadLine 还提供一个绑定到 Ctrl+空格 的函数。 该 MenuComplete
函数在命令行下方显示匹配完成的列表。
可以使用 PSReadLine cmdlet 或托管 PowerShell 的应用程序更改这些密钥绑定。 非 Windows 平台上的键绑定可能有所不同。 有关详细信息,请参阅 about_PSReadLine_Functions。
内置Tab键补全功能
PowerShell 为命令行体验的许多方面启用了选项卡完成功能。
文件名完成
若要从可用选择中自动填充文件名或路径,键入部分名称并按下 Tab 键。 PowerShell 会自动将名称扩展至找到的第一个匹配项。 再次按 Tab 键会循环访问每个按键的所有可用选项。
命令和参数名称补全
名称的 Tab 键扩展稍有不同。 若要在 cmdlet 名称上使用 Tab 键扩充,键入名称的整个第一部分(即谓词),然后是后跟的连字符。 你可以填入名称的更多内容以进行部分匹配。 例如,如果您键入 get-co
并按 Tab 键,PowerShell 会自动将其扩展为 Get-Command
cmdlet (请注意,它还会将字母大小写更改为标准格式)。 如果再次按 Tab 键,PowerShell 会将此替换为另一个唯一匹配的 cmdlet 名称 Get-Content
。 Tab 补全还可用于解析 PowerShell 别名和本机可执行文件。
下图显示了选项卡和菜单补全的示例。
其他选项卡补全改进
每个新版本的 PowerShell 都包含对标签补全功能的改进,从而修复错误并提高可用性。
PowerShell 7.0
- Tab 键补全功能用于解析枚举或类型受限的变量赋值
- Tab 键补全用于扩展缩写的 cmdlet 和函数。 例如,
i-psdf<tab>
返回Import-PowerShellDataFile
PowerShell 7.2
- 修复未本地化
about*
主题的选项卡完成问题 - 修复在完成时被视为位置参数的散点
- 添加对基于注释的帮助关键字的补全功能
- 为
#Requires
语句添加完成 - 为 cmdlet 的
Format-*
View 参数添加 Tab 补全 - 添加对基于类的参数补全器的支持
PowerShell 7.3
- 修复为
ValidateScriptAttribute
指定的脚本块中的自动完成功能问题。 - 在
break
和continue
之后添加了循环标签的选项卡补全 - 在多个场景中改进哈希表的完成度
- 参数散点
-
参数
Invoke-CimMethod
-
FilterHashtable 参数
Get-WinEvent
- CIM cmdlet 的属性参数
- 从成员完成方案中删除重复项
- 支持在网络共享路径(UNC路径)中使用正斜杠完成
- 改进成员自动完成
- 确定参数枚举的完成优先级
ValidateSet
- 添加对具有类型参数的泛型方法的类型推理支持
- 改进类型推理和代码补全
- 允许显示方法在
ForEach-Object -MemberName
的完成结果中 - 防止返回 void 的表达式的完成,如 (
[void]("")
) - 允许在类完成基于 AST 的情况下,显示非默认的 Class 构造函数。
- 允许显示方法在
增强命令参数选项卡完成的其他方法
内置选项卡扩展由内部函数 TabExpansion 或 TabExpansion2 控制。 可以创建替换这些函数的默认行为的函数或模块。 可以通过搜索 TabExpansion 关键字在 PowerShell 库中查找示例。
将 ValidateSet
或 ArgumentCompletions
属性与参数结合使用
该 ArgumentCompletions
属性允许向特定参数添加制表符完成值。
该 ArgumentCompletions
属性类似于 ValidateSet
. 当用户在参数名称后面按 Tab 时,这两个属性都会显示值列表。 但是,不像 ValidateSet
那样,值不会被验证。
有关详细信息,请参见:
使用 ArgumentCompleter
属性或带有参数的 Register-ArgumentCompleter
参数完成器是一个脚本模块或函数,它为参数值提供动态的选项卡完成。
该 ArgumentCompleter
特性允许注册一个函数,该函数为参数提供选项卡完成值。 参数完成函数必须可用于包含带有 ArgumentCompleter
属性参数的函数。 通常,函数在同一脚本或模块中定义。
有关详细信息,请参阅 ArgumentCompleter。
该 Register-ArgumentCompleter
cmdlet 在运行时将脚本块注册为指定命令的参数补全函数。 这使您能够在脚本或模块之外,或为原生命令定义参数完成程序。 有关详细信息,请参阅 Register-ArgumentCompleter。
PSReadLine 中的预测性智能感知
PSReadLine 2.1.0 引入了 预测 IntelliSense 功能。 预测 IntelliSense 根据 PSReadLine 历史记录中的项提供完整的命令建议。
PSReadLine 2.2.2 通过添加对使用高级逻辑提供完整命令建议的插件模块的支持,扩展了预测 IntelliSense 的强大功能。 Az.Tools.Predictor 模块是预测 IntelliSense 的第一个插件。 它使用机器学习来预测要运行的 Azure PowerShell 命令以及要使用的参数。
有关详细信息,请参阅 使用预测器。