如何在Windows PowerShell中使用命令历史记录

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

如何使用命令行缓冲区

相关:极客学校:了解如何使用PowerShell自动化Windows

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

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

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

如何查看PowerShell历史记录

Windows PowerShell本身保留您在当前PowerShell会话中键入的命令的历史记录。您可以使用几个附带的cmdlet来查看和处理您的历史记录。

要查看您键入的命令的历史记录,请运行以下cmdlet:

Get-History

通过将结果输出通过管道传输到Select-string cmdlet并指定要搜索的文本,可以搜索历史记录。将下面cmdlet中的“Example”替换为要搜索的文本:

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

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

Get-History | Format-List -Property *

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

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

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

若要从您的历史记录运行命令,请使用以下cmdlet,指定Get-History cmdlet所显示的历史记录项目的ID号:

Invoke-History #

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

Invoke-History 1;Invoke-History 2

如何清除PowerShell历史记录

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

Clear-History

请注意,命令行缓冲区与PowerShell历史记录是分开的。因此,即使在运行Clear-History之后,您也可以继续按向上和向下箭头键滚动您键入的命令。但是,如果您运行Get-History,您将看到您的PowerShell历史记录实际上是空的。

PowerShell不会在两次会话之间记住您的历史记录。要擦除当前会话的两个命令历史记录,您只需关闭PowerShell窗口。

如果要在清除历史记录后清除PowerShell窗口,可以通过运行Clear命令来完成:

Clear

如何保存和导入PowerShell历史记录

如果要保存当前会话的PowerShell命令历史记录以便以后参考,可以执行此操作。

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

这会将您的命令历史记录导出为一个详细的XML文件,其中包含每个命令的“StartExecutionTime”和“EndExecutionTime”值,它们告诉您命令何时运行以及完成所需的时间。

将PowerShell历史记录导出到此类XML文件后,您(或向其发送XML文件的其他任何人)可以使用Add-History cmdlet将其导入到另一个PowerShell会话中:

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

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

相关文章