Есть ли средство оболочки окон для хранения истории?

Я использую Windows 7 64bit. Я обнаружил, что cmd.exe и powershell не могут хранить историю. Это означает, что он потерял мою историю команд, когда я вышел из оболочки.

Есть ли инструменты, которые могут помочь cmd.exe или powershell запомнить историю? Я пытаюсь использовать консоль 2. Консоль 2 крошечная и имеет интерфейс вкладки. Но консоль 2 тоже не может запомнить историю. Возможно, это может быть другой интерфейс.

Ответ 1

Ниже приведен ответ от Keith Hill (PowerShell Microsoft MVP) в его ответе на вопрос история powershell: как вы предотвращаете дублирование команд:

Кстати, если вы хотите автоматически сохранить это при выходе, вы можете сделать это на 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

Ответ 2

Отличная статья в блоге 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
}

Это сохранит историю таким образом, что вы все равно сможете просмотреть историю для начала и конца времени и вычислить продолжительность каждого из них.

Предупреждение: Приведенный выше script будет помнить только историю последнего окна PowerShell. Если вы одновременно работаете с несколькими сеансами оболочки, история всех, кроме одного, будет потеряна.