PowerShell ve Windows 10 vám může poskytnout historii každého příkazu, který jste provedli v aktuální relaci, ale pro mnoho uživatelů to nestačí. Potřebují historii příkazů prováděných napříč relacemi. Pokud potřebujete získat historii příkazů PowerShell a historie pro aktuální relaci sama o sobě nestačí, existuje skript a soubor protokolu, které vám mohou pomoci.
Table of Contents
Historie příkazů Aktuální relace
Pokud používáte PowerShell 5, můžete získat historii příkazů pro aktuální relaci spuštěním následujícího příkazu;
Get-History
Ve výchozím nastavení může PowerShell uložit až 50 příkazů, ale můžete to změnit a uložit více. Otevřete PowerShell a klikněte pravým tlačítkem na záhlaví. Z kontextové nabídky přejděte na Vlastnosti. V okně Vlastnosti přejděte na kartu Možnosti. Uvidíte sekci Historie příkazů, kde je výchozí hodnota nastavena na 50. Změňte ji na vyšší hodnotu.
Protokol historie prostředí PowerShell
Chcete-li zobrazit protokol historie, musíte nejprve nainstalovat modul PSReadLine pomocí následujícího příkazu;
Install-Module PSReadLine
Dále spusťte následující příkaz a vrátí umístění souboru. Soubor v tomto umístění vám poskytne kompletní historii všech příkazů, které jste spustili v PowerShellu.
(Get-PSReadlineOption).HistorySavePath
Historie příkazů PowerShell napříč relacemi
Je to trochu zdlouhavý proces, ale stojí to za to. Toto řešení pochází z Intel. Nejprve otevřete následující umístění a zkontrolujte, zda se v tomto umístění nenachází soubor s názvem Microsoft.PowerShell_profile.ps1.
C:Users<username>DocumentsWindowsPowerShell
Pokud tam žádný soubor není, otevřete PowerShell a spusťte následující příkaz. Otevře se váš profilový soubor v Poznámkovém bloku, ale tento soubor neexistuje a PowerShell vám to řekne a zeptá se, zda jej chcete vytvořit. Umožněte mu vytvořit soubor.
notepad $Profile
Zavřete soubor poznámkového bloku, který se otevře. V PowerShellu spusťte tento příkaz, abyste se ujistili, že používáte PowerShell 5.
$PSVersionTable.PSVersion
Dále nastavte zásadu provádění na RemoteSigned pomocí následujícího příkazu.
set-executionpolicy remotesigned
Dále je třeba nainstalovat PsUrl a PSReadline moduly. Můžete je nainstalovat pomocí následujícího příkazu, pokud se však zobrazí chyba, stačí je nainstalovat ručně postupem uvedeným na odkazovaných stránkách nebo zkuste úložiště přidat jako důvěryhodné úložiště a poté příkaz spustit znovu.
install-module PsUrl
install-module PSReadline
Nyní, když jsou tyto moduly nainstalovány, otevřete tento soubor;
C:Users<username>DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
Do tohoto souboru vložte následující a uložte jej.
$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
Chcete-li zobrazit historii příkazů v PowerShellu, musíte spustit příkaz Get-History, ale je zde jeden velmi zásadní krok, jak zajistit, aby byla vaše historie uložena. PowerShell NELZE zavřít kliknutím na tlačítko Zavřít. Místo toho jej musíte vždy zavřít příkazem exit.
Pomocí kláves se šipkami nahoru a dolů můžete procházet předchozími příkazy.