Як отримати історію команд PowerShell у Windows 10

PowerShell у Windows 10 може надати вам історію кожної команди, яку ви виконали в поточному сеансі, однак для багатьох користувачів цього недостатньо. Їм потрібна історія команд, що виконуються в сеансах. Якщо вам потрібно отримати історію команд PowerShell, а історія для поточного сеансу сама по собі не допомагає, є сценарій і файл журналу, які можуть вам допомогти.

Історія команд Поточний сеанс

Якщо ви використовуєте PowerShell 5, ви можете отримати історію команд для поточного сеансу, виконавши таку команду;

Get-History

За замовчуванням PowerShell може зберігати до 50 команд, але ви можете змінити його, щоб зберегти більше. Відкрийте PowerShell і клацніть правою кнопкою миші рядок заголовка. З контекстного меню перейдіть до Властивості. У вікні Властивості перейдіть на вкладку Параметри. Ви побачите розділ «Історія команд», де за замовчуванням встановлено значення 50. Змініть його на вищі значення.

Журнал історії PowerShell

Щоб переглянути журнал історії, вам потрібно спочатку встановити модуль PSReadLine за допомогою наступної команди;

Install-Module PSReadLine

Далі виконайте таку команду, і вона поверне розташування файлу. Файл у цьому місці надасть вам повну історію кожної команди, яку ви запускали в PowerShell.

(Get-PSReadlineOption).HistorySavePath

Історія команд PowerShell між сеансами

Це трохи тривалий процес, але він того варте. Це рішення походить з Intel. Спочатку відкрийте наведене нижче розташування та перевірте, чи є в цьому місці файл Microsoft.PowerShell_profile.ps1.

C:Users<username>DocumentsWindowsPowerShell

Якщо там немає файлу, відкрийте PowerShell і виконайте таку команду. Він відкриє файл вашого профілю в Блокноті, але цього файлу не існує, і PowerShell розповість вам про це та запитає, чи хочете ви його створити. Дозвольте йому створити файл.

notepad $Profile

Закрийте файл блокнота, що відкриється. У PowerShell виконайте цю команду, щоб переконатися, що ви використовуєте PowerShell 5.

$PSVersionTable.PSVersion

Далі встановіть політику виконання на RemoteSigned за допомогою такої команди.

set-executionpolicy remotesigned

Далі необхідно встановити PsUrl і PSReadline модулі. Ви можете встановити їх за допомогою наступної команди, але якщо ви отримаєте помилку, просто встановіть їх вручну за допомогою процесу, описаного на пов’язаних сторінках, або спробуйте додати репозиторій як надійне сховище, а потім запустіть команду знову.

install-module PsUrl
install-module PSReadline

Тепер, коли ці модулі встановлено, відкрийте цей файл;

C:Users<username>DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1

Вставте наступне в цей файл і збережіть його.

$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

Щоб переглянути історію команд у PowerShell, вам потрібно запустити команду Get-History, однак є один дуже важливий крок, щоб переконатися, що ваша історія збережена. Ви НЕ МОЖЕТЕ закрити PowerShell, натиснувши кнопку закрити. Натомість ви завжди повинні закривати його за допомогою команди exit.

Ви можете використовувати клавіші зі стрілками вгору та вниз для перемикання попередніх команд.