Windows PowerShell persistent history Windows PowerShell persistent history windows windows

Windows PowerShell persistent history


Very related to this question is "How do I access my history using the up/down arrows?" The PSReadLine module solves this:

Install-Package PSReadLine

Then add:

Import-Module PSReadLine

To your $profile.


Well, as a combination of the topicstarter's code and a slightly changed answer by Steven Penny, this is the full piece of code which is working for me

################# Persistent History ############# Save last 200 history items on exit$MaximumHistoryCount = 200    $historyPath = Join-Path (split-path $profile) history.clixml# Hook powershell's exiting event & hide the registration with -supportevent (from nivot.org)Register-EngineEvent -SourceIdentifier powershell.exiting -SupportEvent -Action {      Get-History | Export-Clixml $historyPath}.GetNewClosure()# Load previous history, if it existsif ((Test-Path $historyPath)) {    Import-Clixml $historyPath | ? {$count++;$true} | Add-History    Write-Host -Fore Green "`nLoaded $count history item(s).`n"}# Aliases and functions to make it usefulNew-Alias -Name i -Value Invoke-History -Description "Invoke history alias"Rename-Item Alias:\h original_h -Forcefunction h { Get-History -c  $MaximumHistoryCount }function hg($arg) { Get-History -c $MaximumHistoryCount | out-string -stream | select-string $arg }


This is the code I used to use when I persisted my history:

$historyPath = Join-Path (split-path $profile) "history-$(Get-Date -f o).clixml"Register-EngineEvent -SourceIdentifier powershell.exiting -SupportEvent -Action {    Get-History | Export-Clixml $historyPath}.GetNewClosure()

The GetNewClosure() is used to capture the $historyPath variable IIRC.