打开网易新闻 查看更多图片

Windows 电源外壳具有内置的命令历史记录功能,可提供有关已运行命令的详细信息。与命令提示符一样,PowerShell 仅记住当前会话的命令历史记录。

如何使用命令行缓冲区

从技术上讲,PowerShell 具有两种类型的命令历史记录。首先是命令行缓冲区,它实际上是图形 PowerShell 终端应用程序的一部分,而不是基础 Windows 电源外壳应用程序的一部分。它提供了一些基本功能:

  • 向上箭头:回想一下您键入的上一个命令。重复按键可浏览您的命令历史记录。
  • 向下箭头:回想一下您键入的下一个命令。重复按键可浏览您的命令历史记录。
  • F8:在命令历史记录中搜索与当前命令行上的文本匹配的命令。因此,如果要搜索以“p”开头的命令,请在命令行上键入“p”,然后反复点击 F8 以循环浏览历史记录中以“a”开头的命令。

默认情况下,缓冲区会记住您键入的最后 50 个命令。若要更改此设置,请右键单击 PowerShell 提示窗口的标题栏,选择“属性”,然后更改“命令历史记录”下的“缓冲区大小”值。

如何查看超级外壳历史记录

Windows 超级外壳本身会保留你在当前超级外壳会话中键入的命令的历史记录。可以使用包含的多个 cmdlet 来查看和处理历史记录。

若要查看已键入命令的历史记录,请运行一下 cmdlet:

Get-History

打开网易新闻 查看更多图片

可以通过将生成的输出通过管道传输到 cmdlet 并指定要搜索的文本来搜索历史记录。将以下 cmdlet 中的“示例”替换为要搜索的文本:

Select-String

Get-History | Select-String -Pattern "Example"

若要查看显示每个命令的执行状态及其开始和结束时间的更详细的命令历史记录,请运行以下命令:

Get-History | Format-List -Property *

默认情况下,该 cmdlet 仅显示 32 个最近的历史记录条目。如果要查看或搜索大量历史记录条目,请使用该选项指定 PowerShell 应显示的历史记录条目数,如下所示:

Get-History

-Count

Get-History -Count 1000
Get-History -Count 1000 | Select-String -Pattern "Example"
Get-History -Count 1000 | Format-List -Property *

打开网易新闻 查看更多图片

如何从历史记录中运行命令

若要从历史记录中运行命令,请使用以下 cmdlet,并指定历史记录项的 Id 号,如该 cmdlet 所示:

Get-History

Invoke-History #

若要从历史记录背靠背运行两个命令,请在同一行上使用两次,以分号分隔。例如,要快速运行历史记录中的第一个命令,然后运行第二个命令,请运行:

Invoke-History

Invoke-History 1;Invoke-History 2

如何清除您的电源外壳历史记录

若要清除已键入命令的历史记录,请运行以下 cmdlet:

Clear-History

请注意,命令行缓冲区独立于超级外壳历史记录。因此,即使在运行 之后,您也可以继续按向上和向下箭头键滚动浏览已键入的命令。但是,如果运行 ,你将看到你的 PowerShell 历史记录实际上是空的。

Clear-History

Get-History

强势外壳不记得会话之间的历史记录。若要擦除当前会话的两个命令历史记录,只需关闭 PowerShell 窗口即可。

如果要在清除历史记录后清除 PowerShell 窗口,可以通过运行以下命令来执行此操作:

Clear

Clear

如何保存和导入您的超级外壳历史记录

如果要保存当前会话的 PowerShell 命令历史记录,以便以后可以引用它,则可以这样做。

Get-History | Export-Clixml -Path c:\users\name\desktop\commands.xml

打开网易新闻 查看更多图片

这会将命令历史记录导出为详细的 XML 文件,其中包含每个命令的“开始执行时间”和“结束执行时间”值,这些值告诉您命令的运行时间以及完成时间。

将 PowerShell 历史记录导出到此类 XML 文件后,你(或将 XML 文件发送到的任何其他人)可以使用“添加历史记录”cmdlet 将其导入到另一个 PowerShell 会话:

Add-History -InputObject (Import-Clixml -Path C:\users\name\desktop\commands.xml)

如果在导入此类 XML 文件后运行 cmdlet,你将看到 XML 文件中的命令已导入到当前 PowerShell 会话的历史记录中。

Get-History