Те, кто имеет навыки работы с командной строкой, наверняка знают о ее способности сохранять историю выполненных команд во временный лог. Так, просмотреть список всех выполненных во время сеанса команд можно нажатием клавиши F7 либо используя команду doskey /history. Тем более, подобным функционалом обладает PowerShell, позволяющая просматривать историю выполненных команд не только в рамках конкретной сессии, но и после закрытия консоли и даже перезагрузки компьютера.
История команд в текущей сессии
Просмотр истории выполненных команд в рамках текущей сессии PowerShell почти ничем не отличается от просмотра истории команд в классической командной строке.
- Кнопки-стрелки вверх-вниз позволяют переключаться между введенными ранее командами, то же самое делает клавиша F8.
- Клавиша F3 дублирует последнюю команду, клавиша F5 – первую.
- Клавиши F2 копирует, а F4 обрезает предыдущую команду до определенного символа.
- Клавиша F7 открывает окошко со списком выполненных команд, перемещаться между которыми можно с помощью клавиш-стрелок вверх-вниз.
Для вывода списка команд с указанием порядкового номера в PowerShell используется командлет:
Get-History
Или Get-History | Format-List -Property *, если нужно получить о выполненных командах подробные сведения.
Локальная история команд
По завершении сессии история выполненных команд автоматически очищается, однако начиная с версии 5.1, PowerShell научилась сохранять историю выполненных команд в отдельный текстовый файл ConsoleHost_history.txt , расположенный в папке профиля пользователя:
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline
Открыть его можно Блокнотом.
Или вывести содержимое прямо в консоль командой:
cat (Get-PSReadlineOption).HistorySavePath
Функционал сохранения команд в обновляемый лог реализуется силами модуля PSReadLine, расположенном в системной папке %programfiles%\WindowsPowerShell\Modules\PSReadline.
В PowerShell 5.0 данный модуль отсуствует, но его можно установить из онлайнового репозитория PowerShell Gallery командой:
Install-Module -Name PSReadLine -AllowClobber -Force
Но более правильным решением станет установка актуальной версии PowerShell, уже включающую набор актуальных модулей.
Установка нового модуля для старой версии PowerShell может привести к тому, что у вас перестанет подгружаться старая версия PSReadLine.
Модуль PSReadLine
Модулем PSReadLine поддерживается множество настроек и опций управления историей команд, в частности очистка журнала и изменение его размера, интерактивный поиск по журналу в обоих направлениях, исключение определенных команд, изменение расположения лога и так далее.
Что касается работы с локальной историей, помимо выводящей сохраненные команды клавиши F8, особый интерес представляет функция прогнозирования Predictive IntelliSense, доступная и включенная по умолчанию в PSReadLine 2.2.6. Данная функция автоматически подбирает наиболее подходящие команды при наборе, используя историю ранее выполненных и сохраненных в локальном журнале команд. Если предложенная команда подходит, пользователю достаточно нажать клавишу правую стрелку, чтобы PowerShell выполнила автонабор.
Для отображения подсказок консоль по умолчанию использует серый цвет, плохо различимый на черном фоне, но это легко поправить командой Set-PSReadLineOption -Colors @{ InlinePrediction = '#63b0cc'}, где #63b0cc – шестнадцатеричный код нового цвета.
Также нужно отметить, что набор горячих клавиш в PowerShell 7.x отличается от набора в PowerShell 5.x.
Вывести список новых хоткеев вы можете командой:
Get-PSReadlineKeyHandler | ? {$_.function -like '*hist*'}
Добавить комментарий