我使用的Windows 7 64位。我发现两者的cmd.exe和PowerShell不能保持历史。这意味着它失去了我的命令历史记录,当我退出外壳。是否有一个Windows外壳工具可以保留历史?
有没有一种工具可以帮助CMD.EXE或PowerShell来记住历史?我尝试使用控制台2.控制台2是微小的,有一个选项卡界面。但控制台2也记不起历史。也许还有另一个前端可以做到这一点。
我使用的Windows 7 64位。我发现两者的cmd.exe和PowerShell不能保持历史。这意味着它失去了我的命令历史记录,当我退出外壳。是否有一个Windows外壳工具可以保留历史?
有没有一种工具可以帮助CMD.EXE或PowerShell来记住历史?我尝试使用控制台2.控制台2是微小的,有一个选项卡界面。但控制台2也记不起历史。也许还有另一个前端可以做到这一点。
有上的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会话,则除了其中一个会话的历史记录都将丢失。
下面的答案是从基思·希尔(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