有没有一种 Windows shell 工具可以记录历史记录?

10

我使用的是64位的Windows 7操作系统。我发现cmd.exe和powershell无法保存历史命令,即当我退出shell时会丢失我的命令历史记录。

是否有工具可以帮助cmd.exe或powershell记住历史记录呢?我尝试了使用console 2,它体积小、拥有选项卡界面,但console 2也无法记住历史记录。也许还有其他前端可以实现这一功能。

2个回答

6
下面的答案来自Keith Hill(PowerShell Microsoft MVP),他在回答powershell history: how do you prevent duplicate commands这个问题时说:
顺便提一句,如果你想在退出时自动保存,可以在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

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会话,则除一个外所有会话的历史记录都将丢失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接