Содержание:
Работая в классической командной строке или PowerShell, вы в любой момент можете нажать F7 и просмотреть историю всех выполненных команд. И не только просмотреть, но и выбрать любую из них. Это очень удобная и полезная функция, которая позволяет экономить время при повторном наборе команд, но пользоваться ее преимуществами получится только в текущем сеансе.
Как только сессия закрывается, вся история команд тут же удаляется. Если вас это не устраивает, и вы хотите сохранять историю так, чтобы она была доступна и после закрытия консоли, придется обратиться к ее расширенным возможностям. Поддерживаются таковые и классической командной строкой, и более совершенным ее аналогом PowerShell.
Командная строка
Для получения списка выполненных команд помимо клавиши F7 можно использовать специальную команду doskey с ключом history. История выводится непосредственно в консоль и также доступна только в текущей сессии, поэтому для ее сохранения используем обычное перенаправление в файл, например, вот так, дешево и сердито:
doskey /history > C:/20.05.20.log
Формат файла истории не обязательно должен быть LOG, уместны также форматы TХT, HTML, CSV и даже RTF.
Утилита PowerShell
В случае с консолью PowerShell всё куда интереснее. Начиная с пятой версии консоль сохраняет все введенные и выполненные командлеты в текстовый лог ConsoleHost_history.tхt, расположенный по пути %userprofile%/AppData/Roaming/Microsoft/Windows/PowerShell/PSReadline.
Даже если вы завершите сессию в консоли и выключите компьютер, команды останутся сохраненными и будут доступны для вызова в PowerShell нажатием клавиши «Стрелка вверх». Каждое нажатие выводит предыдущую команду, но можно отобразить и весь список выполненных команд сразу. Делается это так:
cat (Get-PSReadlineOption).HistorySavePath
Отвечающий за историю модуль поддерживает и другие функции. Если вы введете команду Get-PSReadlineOption, то получите в консоли приличный список доступных параметров. Ознакомиться с их назначением можно в официальной документации к PowerShell, но смысл некоторых из них понятен и так. К примеру, нетрудно догадаться, что ключ MaximumHistoryCount устанавливает максимальное число элементов, сохраняемых в список истории.
Команда Remove-Item (Get-PSReadlineOption).HistorySavePath очищает историю введенных команд, Set-PSReadlineOption -HistorySaveStyle SaveNothing запрещает ведение истории, Set-PSReadlineOption -HistorySaveStyle SaveIncrementally вновь разрешает сохранение данных.
В целом, начинающему администратору вполне должно хватить данного функционала для облегчения работы в консоли. Если же вдруг при выполнении любой из приведенных выше команд появится ошибка «имя командлета не распознано», это с большой долей вероятности укажет на отсутствие требуемого модуля. Установить его в Windows 10 с PowerShell v5 можно командой Install-Module PSReadLine с последующим разрешением на подключение поставщика NuGet.
ну сохранил в файл и что?
А как ее подгрузить-то в новую консоль?
Таким образом, возможность сохранения истории выполненных команд в PowerShell 5.0 — это еще один аргумента отказа от cmd в пользу консоли PoSh.