2012-02-13 2 views
10

Я использую Windows 7 64bit. Я обнаружил, что 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-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. Если вы одновременно работаете с несколькими сеансами оболочки, история всех, кроме одного, будет потеряна.

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 
Смежные вопросы