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

Photo of author

By maciekx

PowerShell w systemie Windows 10 ma zdolność do rejestrowania historii wszystkich poleceń wykonanych w aktualnej sesji, ale dla wielu użytkowników to może nie być wystarczające. Często potrzebują oni dostępu do historii poleceń z wcześniejszych sesji. W przypadku, gdy potrzebujesz pełnej historii poleceń w PowerShell, istnieje skrypt oraz plik dziennika, które mogą Ci w tym pomóc.

Historia poleceń – aktualna sesja

Dla użytkowników PowerShell 5, aby uzyskać historię poleceń z bieżącej sesji, wystarczy uruchomić poniższe polecenie:

Get-History

Domyślnie PowerShell przechowuje do 50 ostatnich poleceń, jednak można to dostosować, aby zapamiętywać więcej. Aby to zrobić, otwórz PowerShell, kliknij prawym przyciskiem myszy na pasek tytułowy, a następnie wybierz Właściwości. W oknie Właściwości przejdź do zakładki Opcje. W sekcji Historia poleceń zmień wartość domyślną z 50 na większą.

Dziennik historii PowerShell

Aby uzyskać dostęp do dziennika historii, najpierw zainstaluj moduł PSReadLine, wykonując poniższe polecenie:

Install-Module PSReadLine

Po zainstalowaniu modułu uruchom poniższe polecenie, aby uzyskać lokalizację pliku, która zawiera pełną historię wszystkich poleceń uruchomionych w PowerShell:

(Get-PSReadlineOption).HistorySavePath

Historia poleceń PowerShell między sesjami

To rozwiązanie jest nieco bardziej skomplikowane, ale jego wdrożenie przynosi korzyści. Inspiracją jest Intel. Rozpocznij od sprawdzenia, czy w lokalizacji poniżej znajduje się plik o nazwie Microsoft.PowerShell_profile.ps1:

C:\Users\\Documents\WindowsPowerShell

Jeśli plik nie istnieje, otwórz PowerShell i wprowadź poniższe polecenie, co spowoduje otwarcie pliku profilu w Notatniku. Jeśli plik nie istnieje, PowerShell zapyta, czy chcesz go stworzyć – zgódź się na to.

notepad $Profile

Po zamknięciu Notatnika uruchom polecenie, aby sprawdzić, czy korzystasz z PowerShell 5:

$PSVersionTable.PSVersion

Następnie ustaw zasady wykonywania na RemoteSigned, używając polecenia:

Set-ExecutionPolicy RemoteSigned

Musisz również zainstalować moduły PsUrl oraz PSReadline. Możesz to zrobić za pomocą poniższych poleceń. Jeśli napotkasz błąd, spróbuj zainstalować je ręcznie zgodnie z instrukcjami na stronach, lub dodaj repozytorium do zaufanych repozytoriów i spróbuj ponownie.

Install-Module PsUrl
Install-Module PSReadline

Po zainstalowaniu tych modułów, otwórz plik:

C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Następnie wklej poniższy kod do pliku i zapisz zmiany:

$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 sprawdzić historię poleceń w PowerShell, wystarczy użyć polecenia Get-History. Jednak kluczowym krokiem jest upewnienie się, że historia została poprawnie zapisana. Należy unikać zamykania PowerShell przy użyciu przycisku zamknięcia okna; zamiast tego zawsze należy używać polecenia exit.

Możesz używać klawiszy strzałek w górę i w dół, aby przeglądać poprzednie polecenia.


newsblog.pl