Основы работы с историей команд в PowerShell

Powershellhistory

Те, кто имеет навыки работы с командной строкой, наверняка знают о ее способности сохранять историю выполненных команд во временный лог. Так, просмотреть список всех выполненных во время сеанса команд можно нажатием клавиши F7 либо используя команду doskey /history. Тем более, подобным функционалом обладает PowerShell, позволяющая просматривать историю выполненных команд не только в рамках конкретной сессии, но и после закрытия консоли и даже перезагрузки компьютера.

PowerShell

История команд в текущей сессии

Просмотр истории выполненных команд в рамках текущей сессии PowerShell почти ничем не отличается от просмотра истории команд в классической командной строке.

  • Кнопки-стрелки вверх-вниз позволяют переключаться между введенными ранее командами, то же самое делает клавиша F8.
  • Клавиша F3 дублирует последнюю команду, клавиша F5 – первую.
  • Клавиши F2 копирует, а F4 обрезает предыдущую команду до определенного символа.
  • Клавиша F7 открывает окошко со списком выполненных команд, перемещаться между которыми можно с помощью клавиш-стрелок вверх-вниз.

Для вывода списка команд с указанием порядкового номера в PowerShell используется командлет:

Get-History

Get-History

Или Get-History | Format-List -Property *, если нужно получить о выполненных командах подробные сведения.

Format List Property

Локальная история команд

По завершении сессии история выполненных команд автоматически очищается, однако начиная с версии 5.1, PowerShell научилась сохранять историю выполненных команд в отдельный текстовый файл ConsoleHost_history.txt , расположенный в папке профиля пользователя:

%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline

PSReadline

Открыть его можно Блокнотом.

ConsoleHost history

Или вывести содержимое прямо в консоль командой:

cat (Get-PSReadlineOption).HistorySavePath

Функционал сохранения команд в обновляемый лог реализуется силами модуля PSReadLine, расположенном в системной папке %programfiles%\WindowsPowerShell\Modules\PSReadline.

В PowerShell 5.0 данный модуль отсуствует, но его можно установить из онлайнового репозитория PowerShell Gallery командой:

Install-Module -Name PSReadLine -AllowClobber -Force

PSReadLine

Но более правильным решением станет установка актуальной версии PowerShell, уже включающую набор актуальных модулей.

Установка нового модуля для старой версии PowerShell может привести к тому, что у вас перестанет подгружаться старая версия PSReadLine.

CMD

Примечание: установить актуальную версию PowerShell можно командой iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI". Инсталляция будет выполнена с помощью классического мастера-установщика.

UseMSI

Модуль PSReadLine

Модулем PSReadLine поддерживается множество настроек и опций управления историей команд, в частности очистка журнала и изменение его размера, интерактивный поиск по журналу в обоих направлениях, исключение определенных команд, изменение расположения лога и так далее.

Что касается работы с локальной историей, помимо выводящей сохраненные команды клавиши F8, особый интерес представляет функция прогнозирования Predictive IntelliSense, доступная и включенная по умолчанию в PSReadLine 2.2.6. Данная функция автоматически подбирает наиболее подходящие команды при наборе, используя историю ранее выполненных и сохраненных в локальном журнале команд. Если предложенная команда подходит, пользователю достаточно нажать клавишу правую стрелку, чтобы PowerShell выполнила автонабор.

Predictive IntelliSense

Для отображения подсказок консоль по умолчанию использует серый цвет, плохо различимый на черном фоне, но это легко поправить командой Set-PSReadLineOption -Colors @{ InlinePrediction = '#63b0cc'}, где #63b0cc – шестнадцатеричный код нового цвета.

Set-PSReadLineOption

Также нужно отметить, что набор горячих клавиш в PowerShell 7.x отличается от набора в PowerShell 5.x.

Вывести список новых хоткеев вы можете командой:

Get-PSReadlineKeyHandler | ? {$_.function -like '*hist*'}

Get-PSReadlineKeyHandler

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *