如何在 Windows 10 上获取 PowerShell 命令历史记录
Windows 10 上的 PowerShell 可以为您提供当前会话中执行的每个命令的历史记录,但是对于许多用户来说这还不够。他们需要跨会话执行的命令的历史记录。如果您需要获取 PowerShell 命令历史记录,并且仅当前会话的历史记录并不能解决问题,那么脚本和日志文件可以为您提供帮助。
命令历史当前会话
如果您运行的是 PowerShell 5,则可以通过运行以下命令来获取当前会话的命令历史记录;
Get-History默认情况下,PowerShell 最多可以保存 50 个命令,但您可以更改它以保存更多命令。打开 PowerShell 并右键单击标题栏。从上下文菜单中,转到属性。在“属性”窗口中,转到“选项”选项卡。您将看到命令历史记录部分,其中默认设置为 50。将其更改为更高的值。
PowerShell 历史日志
为了查看历史日志,您需要首先使用以下命令安装 PSReadLine 模块;
Install-Module PSReadLine
接下来,运行以下命令,它将返回文件位置。此位置的文件将为您提供在 PowerShell 中运行的每个命令的完整历史记录。
(Get-PSReadlineOption).HistorySavePath跨会话 PowerShell 命令历史记录
这是一个有点漫长的过程,但这是值得的。该解决方案来自英特尔。首先打开以下位置并检查该位置是否有名为 Microsoft.PowerShell_profile.ps1 的文件。
C:\Users\<username>\Documents\WindowsPowerShell如果那里没有文件,请打开 PowerShell 并运行以下命令。它将在记事本中打开您的配置文件,但该文件不存在,PowerShell 会告诉您尽可能多的信息,并询问您是否要创建它。允许它创建文件。
notepad $Profile关闭打开的记事本文件。在 PowerShell 中,运行此命令以确保您正在运行 PowerShell 5。
$PSVersionTable.PSVersion接下来,使用以下命令将执行策略设置为 RemoteSigned。
set-executionpolicy remotesigned接下来,您需要安装 PsUrl 和 PSReadline 模块。您可以使用以下命令安装它们,但如果出现错误,只需按照链接页面上概述的过程手动安装它们,或者尝试将存储库添加为可信存储库,然后再次运行该命令。
install-module PsUrlinstall-module PSReadline现在这些模块已经安装,打开这个文件;
C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1将以下内容粘贴到该文件中并保存。
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward为了在 PowerShell 中查看命令历史记录,您需要运行 Get-History 命令,但是有一个非常关键的步骤来确保保存历史记录。您无法通过单击关闭按钮来关闭 PowerShell。相反,您必须始终使用 exit 命令关闭它。
您可以使用向上和向下箭头键循环执行先前的命令。


