Jak uzyskać historię poleceń programu PowerShell w systemie Windows 10

PowerShell w systemie Windows 10 może zapewnić historię każdego polecenia wykonanego w bieżącej sesji, jednak dla wielu użytkowników to nie wystarczy. Potrzebują historii poleceń wykonywanych podczas sesji. Jeśli chcesz uzyskać historię poleceń programu PowerShell, a sama historia bieżącej sesji nie wystarczy, istnieje skrypt i plik dziennika, które mogą Ci pomóc.

Historia poleceń – bieżąca sesja

Jeśli używasz PowerShell 5, możesz pobrać historię poleceń dla bieżącej sesji, uruchamiając następujące polecenie;

Get-History

Domyślnie PowerShell może zapisać do 50 poleceń, ale możesz to zmienić, aby zaoszczędzić więcej. Otwórz PowerShell i kliknij prawym przyciskiem myszy pasek tytułu. Z menu kontekstowego przejdź do Właściwości. W oknie Właściwości przejdź do zakładki Opcje. Zobaczysz sekcję Historia poleceń, w której wartość domyślna to 50. Zmień ją na wyższą.

Dziennik historii programu PowerShell

Aby wyświetlić dziennik historii, należy najpierw zainstalować moduł PSReadLine za pomocą następującego polecenia;

Install-Module PSReadLine

Następnie uruchom następujące polecenie, a zwróci ono lokalizację pliku. Plik w tej lokalizacji zawiera pełną historię każdego polecenia uruchomionego w programie PowerShell.

(Get-PSReadlineOption).HistorySavePath

Historia poleceń programu PowerShell między sesjami

To trochę długi proces, ale warto. To rozwiązanie pochodzi z Intel. Najpierw otwórz następującą lokalizację i sprawdź, czy w tej lokalizacji znajduje się plik o nazwie Microsoft.PowerShell_profile.ps1.

C:Users<username>DocumentsWindowsPowerShell

Jeśli nie ma tam pliku, otwórz PowerShell i uruchom następujące polecenie. Otworzy twój plik profilu w Notatniku, ale ten plik nie istnieje, a PowerShell powie ci tyle i zapyta, czy chcesz go utworzyć. Pozwól mu utworzyć plik.

notepad $Profile

Zamknij otwarty plik notatnika. W programie PowerShell uruchom to polecenie, aby upewnić się, że używasz programu PowerShell 5.

$PSVersionTable.PSVersion

Następnie ustaw zasady wykonywania na RemoteSigned za pomocą następującego polecenia.

set-executionpolicy remotesigned

Następnie musisz zainstalować PsUrl i PSReadline moduły. Możesz je zainstalować za pomocą następującego polecenia, jeśli pojawi się błąd, po prostu zainstaluj je ręcznie zgodnie z procesem opisanym na połączonych stronach lub spróbuj dodać repozytorium jako zaufane repozytorium, a następnie ponownie uruchom polecenie.

install-module PsUrl
install-module PSReadline

Po zainstalowaniu tych modułów otwórz ten plik;

C:Users<username>DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1

Wklej następujący plik do tego pliku i zapisz go.

$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

Aby wyświetlić historię poleceń w PowerShell, musisz uruchomić polecenie Get-History, jednak jest jeden bardzo ważny krok, aby upewnić się, że historia została zapisana. NIE MOŻNA zamknąć programu PowerShell, klikając przycisk zamykania. Zamiast tego zawsze musisz go zamknąć poleceniem exit.

Możesz użyć klawiszy strzałek w górę i w dół, aby przechodzić między poprzednimi poleceniami.