2012-02-13 62 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 
相關問題