about_History

简短说明

介绍了如何获取和运行命令历史记录中的命令。

长说明

在命令提示符下输入命令时,PowerShell 会将该命令保存在命令历史记录中。 你可以将历史记录中的命令用作你的工作记录。 另外,你可以重新调用和运行命令历史记录中的命令。

PowerShell 有两个不同的历史记录提供程序:内置历史记录和由 PSReadLine 模块管理的历史记录。 这些历史记录是分开管理的,但这两份历史记录都可以在加载 PSReadLine 的会话中使用。

使用 PSReadLine 历史记录

PSReadLine 历史记录跟踪所有 PowerShell 会话中使用的命令。 历史记录被写入到每个主机的中心文件。 该历史记录文件可供所有会话使用,并包含所有过去的历史记录。 会话结束时,历史记录不会被删除。 此外,无法通过 *-History cmdlet 管理该历史记录。 有关详细信息,请参阅 about_PSReadLine

使用内置会话历史记录

内置历史记录仅跟踪当前会话中使用的命令。 该历史记录不可用于其他会话,并且在会话结束时会被删除。

历史记录 Cmdlet

PowerShell 有一组管理命令历史记录的 cmdlet。

Cmdlet 别名 说明
Get-History h 获取命令历史记录。
Invoke-History r 运行命令历史记录中的命令。
Add-History 将命令添加到命令历史记录。
Clear-History clhy 从命令历史记录中删除命令。

用于管理历史记录的键盘快捷键

在 PowerShell 控制台中,可以使用以下快捷键来管理命令历史记录。

  • 向上箭头 - 显示上一个命令。
  • 向下箭头 - 显示下一个命令。
  • F7 - 显示命令历史记录。
  • Esc - 隐藏历史记录。
  • F8 - 查找命令。 键入一个或多个字符,然后按 F8。 再次按 F8 会查找下一个实例。
  • F9 - 按历史记录 ID 查找命令。 键入历史记录 ID,然后按 F9。 按 F7 来查找 ID。
  • #<string>Tab - 在历史记录中搜索 *<string>* 并返回最近的匹配项。 如果重复按 Tab,将循环访问历史记录中的匹配项。

注意

这些键绑定是由控制台主机应用程序实现的。 其他应用程序(例如 Visual Studio Code 或 Windows 终端)可能有不同的键绑定。 PSReadLine 模块可以重写这些绑定。 启动 PowerShell 会话时,PSReadLine 会自动加载。 加载 PSReadLine 后,F7F9 不会绑定到任何函数。 PSReadLine 未提供等效功能。 有关详细信息,请参阅 about_PSReadLine

MaximumHistoryCount

$MaximumHistoryCount 首选项变量确定 PowerShell 在命令历史记录中保存的最大命令数。 默认值为 4096。

例如,以下命令将 $MaximumHistoryCount 减少至 100 个命令:

$MaximumHistoryCount = 100

若要应用该设置,请重启 PowerShell。

若要为所有 PowerShell 会话保存新变量值,请将赋值语句添加到 PowerShell 配置文件。 有关配置文件的详细信息,请参阅 about_Profiles

有关 $MaximumHistoryCount 首选项变量的信息,请参阅 about_Preference_Variables

历史记录中命令的顺序

当命令完成执行时(而不是输入命令时),命令将被添加到历史记录中。 如果命令需要一些时间才能完成,或者命令在嵌套提示中执行,则命令在历史记录中可能会乱序。 仅当你退出提示级别时,在嵌套提示中执行的命令才算完成。

另请参阅