有没有一个Windows shell工具可以保存历史记录?

时间:2012-02-13 11:31:58

标签: shell history cmd

我使用的是Windows 7 64位。我发现cmd.exe和powershell都无法保存历史记录。这意味着当我退出shell时它丢失了我的命令历史记录。

是否有工具可以帮助cmd.exe或powershell记住历史记录?我尝试使用控制台2.控制台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博客上有一篇优秀的帖子,它提供了一种在会话中保留命令历史记录的方法:

http://blogs.msdn.com/b/powershell/archive/2006/07/01/perserving-command-history-across-sessions.aspx

导出和导入命令历史记录的相关命令是Get-HistoryAdd-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会话,那么除了其中一个会话之外的所有会话的历史记录都将丢失。