2012-02-13 57 views
10

我使用的Windows 7 64位。我发现两者的cmd.exe和PowerShell不能保持历史。这意味着它失去了我的命令历史记录,当我退出外壳。是否有一个Windows外壳工具可以保留历史?

有没有一种工具可以帮助CMD.EXE或PowerShell来记住历史?我尝试使用控制台2.控制台2是微小的,有一个选项卡界面。但控制台2也记不起历史。也许还有另一个前端可以做到这一点。

回答

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

6

下面的答案是从基思·希尔(PowerShell的微软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 
相关问题