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

Відстеження історії команд PowerShell у Windows 10

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

Перегляд історії команд поточного сеансу

Для користувачів 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<ім’я_користувача>DocumentsWindowsPowerShell

Якщо такого файлу немає, відкрийте PowerShell та виконайте команду. Це відкриє файл вашого профілю в блокноті. Якщо файл не існує, PowerShell повідомить вас про це та запропонує створити його. Погодьтеся на створення файлу.

notepad $Profile

Закрийте блокнот. Потім, у PowerShell, виконайте наступну команду для підтвердження, що ви використовуєте PowerShell 5:

$PSVersionTable.PSVersion

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

set-executionpolicy remotesigned

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

install-module PsUrl
install-module PSReadline

Після успішного встановлення модулів, відкрийте файл:

C:Users<ім’я_користувача>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

Щоб переглянути історію команд, скористайтеся командою Get-History. Важливо пам’ятати, що для збереження історії, ви НЕ ПОВИННІ закривати PowerShell, натискаючи на кнопку закриття вікна. Замість цього завжди використовуйте команду exit для коректного завершення роботи.

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