如何有效清空PowerShell中PSReadline的所有历史纪录
如何有效清空PowerShell中PSReadline的所有历史纪录

如何有效清空PowerShell中PSReadline的所有历史纪录

清除一个 PowerShell 工作阶段 (Session) 的历史纪录

你每次开启一个 PowerShell 视窗,就会建立一个工作阶段 (Session),而每个工作阶段都会维护一份输入命令的历史纪录。

由于 Windows 10 开始,预设 PowerShell 会自动载入 PSReadLine 模块,大大强化了 PowerShell 命令列环境的命令输入能力。你可以使用以下两个命令管理输入命令的历史纪录:

1. 取得历史纪录 (Get-History)

Get-History

你也可以用内建的 h 别名 (Alias),直接输入 h 就可以查询历史纪录:

h

以下是显示在画面上的范例:

Id CommandLine

-- -----------

1 dir
2 cls
3 Get-Alias

2. 执行历史命令 (Invoke-History)

Invoke-History 3

你也可以用内建的 r 别名 (Alias),直接输入 r <Id> 就可以查询历史纪录:

r 3

3. 清除历史纪录 (Clear-History)

Clear-History

另外有个 Alt-F7 键盘快速键,当你按下之后,并不会清除所有历史纪录,而是让你不能用 ⬆ 方向键载入之前输入过的命令!

清除所有 PowerShell 输入过的命令历史纪录

其实管理一个工作阶段的历史纪录不怎么实用,因为 PSReadLine 预设会记忆你有史以来所有输入过的命令,所以你下次重开 PowerShell 又可以搜寻到所有的历史纪录!事实上,你在 PowerShell 视窗输入的所有命令,全部都记录到一个文字档中,你可以用以下命令查出该档案的路径:

(Get-PSReadlineOption).HistorySavePath

预设应该是这个路径:

$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

我的这个档案有 13,370 行,可以想象里面包含了多少东西,但这个机制非常单纯,这反而可以让我想出更多种应用:

1. 你可以手动清除所有不想保留在历史纪录中的命令

例如你曾经输入过的金钥或密码,都应该找出来清空。

2. 你可以加入所有你希望未来可以随时查询到的命令

有很多常见的命令,可以整理一遍,这样之后要输入命令就会变的非常实用!

不过 PSReadLine 有个 MaximumHistoryCount 选项设定,定义能载入的最大历史命令的数量:

(Get-PSReadLineOption).MaximumHistoryCount

这个设定的预设值为 4,096 笔,因此当你开启 PowerShell 之后,并不会真的载入 13,370 行命令,而是只会载入命令最后面的 4,096 行而已。若你要加入一些自己希望在未来可以查到的命令,建议直接加到该档案的最后面!

如何清除PowerShell历史记录?

打开PowerShell,运行命令: Remove-Item (Get-PSReadlineOption).HistorySavePath 需要关闭窗口,再打开窗口用键盘上下键就不会出现了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Title - Artist
0:00