- Просмотр истории предыдущих команд в сеансе PowerShell
- История команд в PowerShell, модуль PSReadLine
- Поиск в истории команд PowerShell
- Настройка истории команд PowerShell с помощью модуля PSReadLine
- Очистка истории предыдущих команд в PowerShell
- Импорт истории команд PowerShell в другую сессию
- Как работать с историей выполненных команд в командной строке
- Как просмотреть, сохранить и очистить историю команд командной строки в Windows
- Просмотр, сохранение, очистка истории команд командной строки
- 1] Просмотр истории команд с помощью DOSKEY
- 2] Просмотр истории CMD с помощью клавиши F7
- 2] Сохранить историю командной строки
- 4] Очистить историю командной строки, используя Alt + F7
Просмотр истории предыдущих команд в сеансе PowerShell
Изначально Windows PowerShell (как и командная строка cmd) сохраняет историю выполненных команд только в текущей сессии PowerShell. При закрытии окошка консоли PowerShell или перезагрузке компьютера, история команд PowerShell, которые вы набирали, нигде не сохраняется. По сравнению с той же bash это является существенным недостатком. Начиная с версии PowerShell 5.0, представленной в Windows 10, по-умолчанию все введенные команды в PS консоли теперь сохраняются в текстовый файл журнала.
История команд в PowerShell, модуль PSReadLine
Допустим, вы набрали и выполнили какую-то сложную команду PowerShell. В Windows 10 и Windows Server 2016 даже после перезагрузки компьютера вы можете открыть новую сессию PowerShell и нажать клавишу со стрелкой вверх. На экране должна отобразить последняя введенная вами команда. Если продолжить нажать клавишу «вверх» — вы увидите все команды, выполненные ранее. Таким образом с помощью клавиш «вверх» и «вниз» вы можете прокручивать историю команд и повторно выполнять ранее набранные команды.
Чтобы вывести подробную информацию о ранее выполненных командах в текущей сессии PowerShell, в том числе реи время запуска/окончания выполнения команды:
Get-History | Format-List -Property *
Оболочка PowerShell в Windows 10 по-умолчанию запоминает последние 4096 команд, которые сохраняются в текстовом файле, расположенном в профиле каждого пользователя
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt .
История ведется отдельно для консоли PowerShell, отдельно для ISE.
Если команда PowerShell требует длительное время на выполнение, вы увидите ее в истории команд только по ее завершении.
Для поиска используется клавиша F7 .
Поиск в истории команд PowerShell
Если вы не хотите пролистывать всю историю команд PowerShell, вы можете выполнить поиск по истории команд с помощью комбинаций клавиш CTRL+R (поиск в обратном направлении) и CTRL+S (поиск вперед). Нажмите сочетание клавиш и начните вводить часть команды, которую вы хотите найти в ранее выполненных командах. Выполняется поиск указанного текста на любой позиции в команде (в отличии от поиска в консоли PowerShell по F8 или Shift+F8, которые ищут совпадения только с начала строки). В консоли PowerShell должна появится предыдущая команда, соответствующая поисковой строке. Совпадения строки подсвечивается в команде.
Если найденная команда вас не устраивает, чтобы продолжить поиск по истории, нажмите сочетание CTRL+R / CTRL+S еще раз. В результате на экране появится следующая команда, соответствующая шаблону поиска.
С помощью клавиши F8 можно найти в истории команду, соответствующую тексту в текущей командной строке. Например, наберите get- и нажмите F8 . В истории будет найдена последняя команда, соответствующая строке. Чтобы перейти к следующей команде истории, нажмите F8 еще раз.
Также можно использовать символ # для поиска в истории команд. Например, чтобы найти последнюю команду, начинающуюся с Get-WMI , наберите #get-wmi и нажмите клавишу Tab . В консоли появится последняя команда, соответствующая шаблону:
Чтобы получить список команд в окне блокнота, выполните команду:
notepad (Get-PSReadLineOption | select -ExpandProperty HistorySavePath)
Для вывода списка команд в истории, соответствующих запросу, можно использовать:
Get-History | Select-String -Pattern «Get-«
Настройка истории команд PowerShell с помощью модуля PSReadLine
Функционал истории команд в PowerShell 5.0 и выше встроен не в сам Windows Management Framework, а основан на стороннем модуле PSReadLine, существенно расширяющим функционал консоли PowerShell. В Windows 10 он находится в каталоге C:\Program Files\WindowsPowerShell\Modules\PSReadline и автоматически импортируется при запуске консоли PowerShell. PSReadLine осуществляет подсветку синтаксиса в консоли, отвечает за возможность использования выделения текста мышкой и его копирование/вставку с помощью CTRL+C и CTRL+V . PSReadLine не входит в состав отдельно устанавливаемого PowerShell 5 для предыдущих версий Windows. Чтобы вести историю команд PowerShell в предыдущих версиях Windows (Windows 7/8.1 и Windows Server 2008R2/2012R2), кроме установки Windows Management Framework 5.1, необходимо установить модуль PSReadLine с помощью менеджера пакетов PackageManagement (ранее OneGet) из оналйн репозитория командой:
Полный список функций модуля PSReadLine для управления историей выполнения команд в PowerShell и привязанных к ним клавишам можно вывести командой:
Для настройки истории команд PowerShell используются командлеты Get-PSReadlineOption и Set-PSReadlineOption. Текущие настройки можно получить так:
Get-PSReadlineOption | select HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
Нам могут быть интересны настройки следующих параметров:
- HistoryNoDuplicates – нужно ли сохранять в истории PowerShell одинаковые команды;
- MaximumHistoryCount – максимальное число сохраненных команд (по умолчанию сохраняются 4096 команд);
- HistorySearchCursorMovesToEnd — нужно ли переходить в конец команды при поиске;
- HistorySearchCaseSensitive – нужно ли учитывать регистр при выполнении поиска (по умолчанию история команд не учитывает регист);
- HistorySavePath – путь к текстовому файлу, в который сохраняется история команд PowerShell;
- HistorySaveStyle – особенности сохранения команд:
- SaveIncrementally — команды сохраняются при выполнении (по-умолчанию)
- SaveAtExit — сохранение истории при закрытии консоли
- SaveNothing — отключает ведение истории команд
Изменить настройки модуля PSReadLine можно с помощью команды Set-PSReadlineOption. Например:
Set-PSReadlineOption -HistorySaveStyle SaveAtExit
Чтобы увеличить количество сохраняемых команд PowerShell в логе, выполните команду:
Set-PSReadlineOption -MaximumHistoryCount 10000
Таким образом, возможность сохранения истории выполненных команд в PowerShell 5.0 — это еще один аргумента отказа от cmd в пользу консоли PoSh.
Очистка истории предыдущих команд в PowerShell
Как мы рассказали выше, модуль PSReadline сохраняет все консольные команды PowerShell в текстовый файл. Однако в некоторых случаях администратору приходится вводить в консоли PowerShell различную конфиденциальную информацию (имена и пароли учетных записей, адреса, персональные данные и т.д.). Другой администратор сервера или атакующий может получить доступ к этим чувствительным данным в текстовом файле. В целях безопасности вы можете очистить журнал выполненных команд PowerShell или совсем отключить историю команд.
Командлет Clear-History можно использовать только для очистки истории команд в оперативной памяти текущего сеанса PowerShell (очищается список предыдущих команд, которые выводит командлет Get-History).
Можно удалить из истории только одну предыдущую команду:
Clear-History -count 1 -newest
Или все команды по определенной маске:
Clear-History -CommandLine *set-ad*
Чтобы полностью удалить историю предыдущих команд PowerShell, нужно удалить файл, в который они сохраняются модулем PSReadline. Проще всего это сделать командой:
После этого закройте сессию PoSh.
Если нужно полностью отключить ведение истории команд PowerShell, выполните команду:
Set-PSReadlineOption -HistorySaveStyle SaveNothing
Импорт истории команд PowerShell в другую сессию
В некоторых случаях бывает удобно иметь под рукой один и тот же список часто-используемых команд PowerShell на различных компьютерах. Вы можете экспортировать текущую историю команд в xml файл и импортировать его на других компьютерах. Это можно сделать, скопировав файл ConsoleHost_history.txt в профиле пользователей на нужные компьютеры.
Также для экспорта команд из текущей сессии в файл можно использовать командлет Export-Clixml :
Get-History | Export-Clixml -Path c:\ps\commands_hist.xml
Для импорта команд из файла в другую сессию PoSh (на локальном или другом компьютере), выполните:
Add-History -InputObject (Import-Clixml -Path c:\ps\commands_hist.xml)
Для автоматического импорта команд в файл при завершении сессии PoSh, можно привязать скрипт к событию завершения сессии PoSh (!! Сессия обязательно должна завершаться командной exit , а не простым закрытием окна PoSh):
Как работать с историей выполненных команд в командной строке
П ри работе в командной строке иногда приходится повторно выполнять ранее введённые команды с атрибутами или без. Неопытные пользователи обычно набирают команды вручную, тратя впустую нервы и время, ведь им и невдомёк, что в командной строке есть такая замечательная функция как просмотр истории введённых команд и их быстрая вставка. В течении одной сессии командная строка могжет запоминать все введённые и выполненные пользователем команды.
Что весьма облегчает повторное введение уже выполненных команд. Для работы с историей в командной строке CMD используются «горячие клавиши» . Вот они:
• F1 или стрелка вправо — выводит по одному символу из последней выполненной команды.
• F2 — выполняет копирование последней команды до определённого символа. Например, если последней командой была ping google.com , при нажатии пробела скопируется только ping.
• F3 , F5 — дублирует предыдущую команду целиком, а если после F3 нажимать клавиши-стрелки вверх-вниз, то можно гулять по всей истории.
• F4 — работает аналогично F2 , только наоборот, и если последняя копирует ранее введённую команду до указанного символа, то F4 обрезает её.
• F5 — то же, что и F3 , а ещё она дублирует функцию стрелки вверх.
• F6 — вставляет в консоль символ EOF (конец файла) . К истории эта хот-клавиша не относится, но может кому пригодится.
• F7 — выводит в консоль в белом окошке всю историю выполненных команд. Перемещаться по ним можно с помощью стрелок вверх-вниз, а выполнять выбранные клавишей Enter . Закрывается список истории нажатием Esc , а очищается с помощью комбинации Alt + F7 .
• F8 — последовательно перебирает список выполненных команд.
• F9 — используется для выборочной вставки команд из истории. Вставляет в консоль команду под определённым номером — 1, 2, 3, 4 и так далее.
Также, если вам будет это интересно, для простого просмотра всех выполненных команд можно использовать команду doskey /history .
Как просмотреть, сохранить и очистить историю команд командной строки в Windows
Командная строка – это не что иное, как черно-белая утилита командной строки, которая поставляется из коробки в Windows 10/8/7. Но те, кто знает его истинный потенциал, это отличная замена для стороннего программного обеспечения многих пользователей. Например, он может помочь вам организовать разделы жесткого диска, создать загрузочный USB-накопитель, обновить все файлы BIOS и многое другое. Многие администраторы и опытные пользователи, как правило, используют несколько команд в этой командной строке для выполнения своей работы. Сегодня мы поговорим о 2 методах, которые помогут пользователю просматривать историю своих командных строк, и об одном способе сохранения этой истории в Windows 10.
Просмотр, сохранение, очистка истории команд командной строки
Мы рассмотрим следующие темы:
- Просмотр с использованием DOSKEY.
- Просмотр с помощью клавиши F7.
- Сохраните историю командной строки.
- Очистить историю командной строки.
1] Просмотр истории команд с помощью DOSKEY
Этот метод довольно прост. После того, как вы ввели ряд команд в окне командной строки, все, что вам нужно сделать, это ввести следующую команду в том же окне командной строки:
После этого вы сможете проверить все команды, которые вы только что ввели во время этого сеанса, в командной строке в той же последовательности, в которой вы их вводили.
Вы можете проверить фрагмент экрана того же самого выше.
2] Просмотр истории CMD с помощью клавиши F7
Это лучше, чем метод DOSKEY, упомянутый выше. Я не утверждаю, что, поскольку это лучше, но если вы просто хотите вернуться к какой-либо ранее выполненной команде, это действительно надежно.
Чтобы просмотреть историю команд, вам нужно нажать клавишу F7 . F7 работает также для командной строки и PowerShell.
Это приведет к появлению небольшого всплывающего окна со списком всех ранее выполненных команд в сеансе.
Вы можете использовать клавиши со стрелками вверх и вниз для навигации по списку и нажать клавишу Enter , чтобы выбрать любой из них.
2] Сохранить историю командной строки
Иногда вам может потребоваться сохранить записи команд, которые они использовали в сеансе с использованием командной строки, в файле TXT, HTML, CSV или RTF.
Для этого вы можете использовать расширение команды DOSKEY.
Вам просто нужно ввести следующую команду, а затем нажать клавишу Ввод ,
Затем сохраненный файл истории будет сохранен в том месте, где вы выполнили команду в окне командной строки.
4] Очистить историю командной строки, используя Alt + F7
Самый простой способ – перезапустить командную строку. История команд очищается автоматически каждый раз, когда вы ее закрываете и снова запускаете командную строку.
Чтобы очистить историю команд, вы также можете использовать сочетание клавиш Alt + F7 . Alt + F7 работает также для командной строки и PowerShell.
Вы также можете удалить историю команд с помощью редактора реестра. Перейдите к следующей клавише:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RunMRU
Далее выберите RunMRU и сотрите все значения, имеющие имя, букву алфавита в правой панели. После этого щелкните правой кнопкой мыши MRUList > Изменить и удалите содержимое данных значений.
Дополнительные советы и рекомендации по командной строке здесь.