清除一个 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 需要关闭窗口,再打开窗口用键盘上下键就不会出现了。