我使用的是Windows 7 64位。我发现cmd.exe和powershell都无法保存历史记录。这意味着当我退出shell时它丢失了我的命令历史记录。
是否有工具可以帮助cmd.exe或powershell记住历史记录?我尝试使用控制台2.控制台2很小,有一个标签界面。但是控制台2也记不起历史。也许还有另一个前端可以做到这一点。
答案 0 :(得分:6)
以下答案来自Keith Hill(PowerShell Microsoft MVP)对问题powershell history: how do you prevent duplicate commands的回答:
BTW如果你想在退出时自动保存它,你可以在2.0上这样做:
Register-EngineEvent PowerShell.Exiting {
Get-History -Count 32767 | Group CommandLine |
Foreach {$_.Group[0]} | Export-CliXml "$home\pshist.xml" } -SupportEvent
然后在负载恢复时,您只需要:
Import-CliXml "$home\pshist.xml" | Add-History
答案 1 :(得分:5)
Windows PowerShell博客上有一篇优秀的帖子,它提供了一种在会话中保留命令历史记录的方法:
导出和导入命令历史记录的相关命令是Get-History
和Add-History
。将以下内容添加到PowerShell配置文件中:
Register-EngineEvent PowerShell.Exiting {
Get-History | Export-Csv $HOME\pshist.csv
} | Out-Null
if (Test-Path $Home\pshist.csv) {
Import-Csv $HOME\pshist.csv | Add-History
}
这将保留历史记录,使您仍然可以检查历史记录的开始和结束时间,并计算每个历史记录的持续时间。
虽然有警告:上述脚本只会记住最近退出的PowerShell窗口的历史记录。如果您同时使用多个shell会话,那么除了其中一个会话之外的所有会话的历史记录都将丢失。