Oto alternatywne podejście, które utrwala twoją historię bez użycia innego skrótu PowerShell.
Zaczerpnięte z
https://software.intel.com/en-us/blogs/2014/06/17/giving-powershell-a-persistent-history-of-commands
Otwórz PowerShell w trybie administratora i dowiedz się, którą wersję programu PowerShell posiadasz, uruchamiając następujące polecenie:
$PSVersionTable.PSVersion
Aby uruchomić tę wersję, potrzebujesz wersji wyższej niż 3. Jeśli masz starszą wersję, zaktualizuj ją.
Zezwól PowerShellowi na importowanie lub używanie skryptów, w tym modułów, przez uruchomienie następującego polecenia:
set-executionpolicy remotesigned
Zainstaluj PsGet i zainstaluj potrzebne moduły, wykonując następujące polecenia:
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
import-module PsGet
install-module PsUrl
install-module PSReadline
Utwórz następujący skrypt
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
Zapisz plik jako C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
, gdzie należy zastąpić poprawną nazwą folderu na komputerze. Nie zapomnij zmienić opcji „zapisz jako typ” dla wszystkich plików.
Zamknij PowerShell i otwórz go ponownie, aby zaczął używać zapisanego skryptu.
Od teraz,
get-history
Pobiera ostatnie kilkaset wpisanych poleceń i możesz je przewijać za pomocą klawiszy strzałek.
install-module PsUrl
służy ten krok, nie udało się na moim komputerze, ale skrypt i tak działa. Używa PSReadline, ale wydaje się, że nie używa PsUrlKolejny sposób, aby to zrobić, na wypadek, gdyby był pomocny dla każdego.
Powershell teraz automatycznie zapisuje historię poleceń w pliku „% userprofile% \ AppData \ Roaming \ Microsoft \ Windows \ PowerShell \ PSReadline \ ConsoleHost_history.txt”
Aby wyświetlić historię, dodałem funkcję do mojego profilu w taki sposób ...
Teraz mogę po prostu wpisać „h2”, aby wyświetlić pełną historię. Niezbyt sprytny, ale skuteczny.
źródło
Nie jest to idealne, ale możesz użyć skrótu z poleceniem start, który mówi PowerShellowi, aby zapisał całą historię przy wyjściu.
Jeśli uruchomisz z tego skrótu, twoja historia zostanie zapisana w ~ \ PowerShell \ history.xml za każdym razem, gdy PowerShell otrzyma zdarzenie wyjściowe.
źródło