Windows powershell история команд

Обновлено: 06.07.2024

Описание способов получения и выполнения команд в журнале команд.

Подробное описание

При вводе команды в командной строке PowerShell сохраняет команду в журнале команд. Вы можете использовать команды в журнале в качестве записи своей работы. Вы также можете отозвать и выполнить команды из журнала команд.

PowerShell имеет два разных регистратора: Встроенный журнал и журнал, которыми управляет модуль PSReadLine . Журналы управляются отдельно, но оба журнала доступны в сеансах, где PSReadLine загружается.

Использование журнала PSReadLine

Журнал PSReadLine отслеживает команды, используемые во всех сеансах PowerShell. Журнал записывается в центральный файл на узле. Этот файл журнала доступен для всех сеансов и содержит весь журнал за прошлый период. Журнал не удаляется по завершении сеанса. Кроме того, этот журнал не может управляться *-History командлетами. Дополнительные сведения см. в разделе about_PSReadLine.

Использование встроенного журнала сеанса

Встроенная История отслеживает только команды, используемые в текущем сеансе. Журнал недоступен для других сеансов и удаляется по завершении сеанса.

Командлеты журнала

PowerShell имеет набор командлетов для управления журналом команд.

Командлет Псевдоним Описание
Get-History h Возвращает журнал команд.
Invoke-History r Выполняет команду в журнале команд.
Add-History Добавляет команду в журнал команд.
Clear-History clhy Удаляет команды из журнала команд.

Сочетания клавиш для управления журналом

В консоли PowerShell для управления журналом команд можно использовать следующие сочетания клавиш.

Эти сочетания клавиш реализуются ведущим приложением консоли. другие приложения, такие как Visual Studio Code или Терминал Windows, могут иметь различные сочетания клавиш. Привязки могут быть переопределены модулем PSReadLine. PSReadLine загружается автоматически при запуске сеанса PowerShell. При загрузке PSReadLine F7 и F9 не привязаны к какой бы то ни было функции. PSReadLine не предоставляет эквивалентной функциональности. Дополнительные сведения см. в разделе about_PSReadLine.

максимумхисторикаунт

$MaximumHistoryCount Переменная предпочтения определяет максимальное количество команд, сохраняемых PowerShell в журнале команд. Значение по умолчанию — 4096.

Например, следующая команда $MaximumHistoryCount позволяет сократить до 100 команд:

Чтобы применить этот параметр, перезапустите PowerShell.

Чтобы сохранить новое значение переменной для всех сеансов PowerShell, добавьте инструкцию назначения в профиль PowerShell. Дополнительные сведения о профилях см. в разделе about_Profiles.

Дополнительные сведения о $MaximumHistoryCount переменной предпочтений см. в разделе about_Preference_Variables.

Порядок команд в журнале

Команды добавляются в журнал, когда команда завершает выполнение, а не при введении команды. Если выполнение команд занимает некоторое время или команды выполняются во вложенной командной строке, команды могут выглядеть неупорядоченными в журнале. Команды, выполняемые во вложенном запросе, выполняются только при выходе из уровня запроса.

История команд в Powershell History

History - командлет, который возвращает в powershell историю команд аналогично Linux. Мы так же можем вызвать команду из истории, экспортировать и импортировать.

Что бы увидеть все команды по работе с историей выполните:

Powershell history

Вся история хранится в рамках текущей сессии и поэтому, если вы закрыли окно Powershell, вся история будет потеряна.

У Get-History есть алиас history, так что можно использовать что вам удобнее.

С помощью этого командлета мы получим всю историю:

У нас доступно два параметра:

  • id - получение команды по идентификатору
  • Count - число последних команд, которые должны вернуться

Следующий командлет исполнит команду по её id:

Powershell Invoke history

Вместо ID можно написать и часть команды, но исполнится именно та, которая употреблялась чаще всего:

Invoke-History id

Если сомневаетесь какая команда выполнится, то можете использовать ключ WhatIF, который сэмулирует действия без каких либо изменений.

Если у нас целый ряд команд, который мы хотим выполнить, то можно просто передать их через цикл. В моем случае это команделты с 162 по 166:

Мы можем выгрузить данные в csv с Powershell:

Как работать с WMI в Powershell

Затем импортировать и добавить в историю команды:

Отмечу, что команды импортируются под другими номерами.

Для очистки истории:

Очистить историю можно по:

  • id - по идентификатору
  • CommandLine - по точному соответствию команд
  • Count - определенное число
  • Newest - самые последние

Кроме этого, при получении истории у нас так же есть данные по времени запуска и окончании работы команд:


Windows PowerShell имеет встроенную функцию истории команд, которая предоставляет подробную информацию о командах, которые вы выполняли. Как и командная строка, PowerShell запоминает только историю команд для текущего сеанса.

Как использовать буфер командной строки

Технически PowerShell имеет два типа истории команд. Во-первых, это буфер командной строки, который фактически является частью графического терминального приложения PowerShell, а не частью базового приложения Windows PowerShell. Он предоставляет несколько основных функций:

  • Стрелка вверх : напоминает предыдущую команду, которую вы набрали. Нажмите клавишу несколько раз, чтобы просмотреть историю команд.
  • Стрелка вниз : вспомните следующую набранную вами команду. Нажмите клавишу несколько раз, чтобы просмотреть историю команд.
  • F8 : поиск в истории команд команды, соответствующей тексту в текущей командной строке. Итак, если вы хотите найти команду, которая начинается с «p», вы должны ввести «p» в командной строке, а затем несколько раз нажать F8, чтобы просмотреть команды в вашей истории, которые начинаются с «a».

По умолчанию буфер запоминает последние 50 введенных вами команд. Чтобы изменить это, щелкните правой кнопкой мыши строку заголовка окна приглашения PowerShell, выберите «Свойства» и измените значение «Размер буфера» в разделе «История команд».


Как просмотреть историю PowerShell

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

Чтобы просмотреть историю введенных вами команд, выполните следующий командлет:


Вы можете выполнить поиск в своей истории, отправив полученный результат в командлет Select-String и указав текст, который вы хотите найти. Замените «Пример» в командлете ниже текстом, который вы хотите найти:


Чтобы просмотреть более подробную историю команд, в которой отображается состояние выполнения каждой команды, а также время ее начала и окончания, выполните следующую команду:


По умолчанию командлет Get-History показывает только 32 самых последних записи истории. Если вы хотите просмотреть или найти большее количество записей истории, используйте параметр -Count чтобы указать, сколько записей истории PowerShell должен отображать, например:


Как запускать команды из вашей истории

Чтобы запустить команду из своей истории, используйте следующий командлет, указав номер Id элемента истории, как показано в командлете Get-History :

Чтобы запустить две команды из своей истории вплотную, дважды используйте Invoke-History в одной строке, разделенных точкой с запятой. Например, чтобы быстро запустить первую команду в своей истории, а затем вторую, вы должны выполнить:


Как очистить историю PowerShell

Чтобы очистить историю введенных вами команд, выполните следующий командлет:

Обратите внимание, что буфер командной строки отделен от истории PowerShell. Таким образом, даже после запуска Clear-History вы можете продолжать нажимать клавиши со стрелками вверх и вниз для прокрутки введенных вами команд. Однако если вы запустите Get-History , вы увидите, что ваша история PowerShell фактически пуста.

PowerShell не запоминает вашу историю между сессиями. Чтобы стереть обе истории команд для текущего сеанса, все, что вам нужно сделать, это закрыть окно PowerShell.

Если вы хотите очистить окно PowerShell после очистки истории, вы можете сделать это, выполнив команду Clear :

Как сохранить и импортировать историю PowerShell

Если вы хотите сохранить историю команд PowerShell для текущего сеанса, чтобы вы могли обратиться к ней позже, вы можете сделать это.


Это экспортирует вашу историю команд в виде подробного XML-файла со значениями «StartExecutionTime» и «EndExecutionTime» для каждой команды, которые сообщают вам, когда команда была выполнена и сколько времени потребовалось для ее завершения.


После того как вы экспортировали историю PowerShell в такой файл XML, вы (или кто-либо другой, кому вы отправляете файл XML) можете импортировать ее в другой сеанс PowerShell с помощью командлета Add-History:

Если вы выполните командлет Get-History после импорта такого XML-файла, вы увидите, что команды из XML-файла были импортированы в историю текущего сеанса PowerShell.


PowerShell в Windows 10 может предоставить вам историю каждой команды, выполненной в текущем сеансе, однако для многих пользователей этого недостаточно. Им нужна история команд, выполненных за сеанс. Если вам нужно получить историю команд PowerShell, а история только для текущего сеанса не помогает, есть сценарий и файл журнала, которые могут вам помочь.

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

Если вы используете PowerShell 5, вы можете получить историю команд для текущего сеанса, выполнив следующую команду;

Проверь это - Ярлыки виртуального рабочего стола Windows 10

Журнал истории PowerShell

Чтобы просмотреть журнал истории, вам необходимо сначала установить модуль PSReadLine с помощью следующей команды;

Затем выполните следующую команду, и она вернет местоположение файла. Файл в этом месте предоставит вам полную историю каждой команды, которую вы выполняете в PowerShell.


Межсессионная история команд PowerShell

Это немного долгий процесс, но оно того стоит. Это решение исходит от Intel . Сначала откройте следующую папку и проверьте, есть ли в ней файл с именем Microsoft.PowerShell_profile.ps1.

Если там нет файла, откройте PowerShell и выполните следующую команду. Он откроет ваш файл профиля в Блокноте, но этот файл не существует, и PowerShell сообщит вам об этом и спросит, хотите ли вы его создать. Разрешите ему создать файл.

Закройте открывшийся файл блокнота. В PowerShell запустите эту команду, чтобы убедиться, что вы используете PowerShell 5.

Затем установите для политики выполнения значение RemoteSigned с помощью следующей команды.

Теперь, когда эти модули установлены, откройте этот файл;

Вставьте следующее в этот файл и сохраните его.

Чтобы просмотреть историю команд в PowerShell, вам необходимо запустить команду Get-History, однако есть один очень важный шаг, чтобы убедиться, что ваша история сохранена. Вы НЕ МОЖЕТЕ закрыть PowerShell, нажав кнопку закрытия. Вместо этого вы всегда должны закрывать его с помощью команды выхода.

Проверь это - Как переключать аудиоустройства с помощью сочетания клавиш в Windows 10


Вы можете использовать клавиши со стрелками вверх и вниз для циклического перехода между предыдущими командами.

Читайте также: