Гид по технологиям

История команд в Windows PowerShell: просмотр, сохранение и управление

6 min read PowerShell Обновлено 02 Dec 2025
PowerShell: история команд — просмотр и сохранение
PowerShell: история команд — просмотр и сохранение

Панель PowerShell с выделенной строкой ввода и стрелками для навигации по истории

Краткие ссылки

  • Как использовать буфер командной строки
  • Как посмотреть историю PowerShell
  • Как выполнить команды из истории
  • Как очистить историю PowerShell
  • Как сохранить и импортировать историю PowerShell

Windows PowerShell имеет встроенный механизм истории команд, который хранит подробную информацию о выполненных вами командах в рамках текущей сессии. Как и в классическом Command Prompt, PowerShell по умолчанию помнит историю только текущей сессии — при закрытии окна всё теряется, если вы не экспортировали историю.

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

Связанный материал: Geek School: Learn How to Automate Windows with PowerShell

Технически в PowerShell есть два уровня истории. Первый — это буфер командной строки терминального окна. Он является частью графического приложения PowerShell (терминала) и предоставляет базовые возможности навигации по ранее введённым строкам:

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

По умолчанию буфер запоминает последние 50 введённых команд. Чтобы изменить это значение:

  1. Щёлкните правой кнопкой по заголовку окна PowerShell.
  2. Выберите “Properties”.
  3. В разделе Command History измените значение “Buffer Size”.

Окно свойств PowerShell с пунктом Buffer Size в разделе Command History

Важно: буфер терминала и внутренняя история PowerShell — разные вещи. Очистка одной не всегда затрагивает другую.

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

Вторая, внутренняя история — это объектная история, доступная через встроенные cmdlet’ы PowerShell. Она хранит записи о выполненных командах в текущей сессии и позволяет получить подробные метаданные.

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

Get-History

Вывод Get-History в PowerShell со списком команд и их Id

Поиск по истории можно выполнить, отправив вывод в Select-String и указав шаблон поиска. Замените “Example” на искомый текст:

Get-History |  Select-String -Pattern "Example"

Пример поиска в истории PowerShell через Select-String

Чтобы получить максимально подробную информацию по каждой записи (статус выполнения, время начала и окончания), используйте форматирование списка всех свойств:

Get-History | Format-List -Property *

Подробный вывод истории команд с полями StartExecutionTime и EndExecutionTime

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

Get-History -Count 1000

Примеры расширенного поиска и вывода:

Get-History -Count 1000 | Select-String -Pattern "Example"

Get-History -Count 1000 | Format-List -Property *

Длинный вывод истории с увеличенным количеством записей через параметр -Count

Как выполнить команды из истории

Чтобы повторно выполнить команду из истории, используйте её Id (получается через Get-History):

Invoke-History #

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

Invoke-History 1;Invoke-History 2

Выполнение команд из истории по Id через Invoke-History

Советы:

  • Перед выполнением команды из истории всегда просмотрите её текст через Get-History, чтобы избежать непреднамеренных действий.
  • Если команда меняла состояние системы (удаление, форматирование, модификация реестра), лучше выполнить её в тестовой среде.

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

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

Clear-History

Обратите внимание: это очищает внутреннюю историю, но не буфер терминала. После Clear-History клавиши Up/Down всё ещё могут возвращать предыдущие строки ввода в текущем окне терминала. Если вы закроете окно PowerShell, оба буфера будут потеряны.

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

Clear

Важно: Clear-History не удаляет экспортированные файлы истории, если вы их ранее сохранили.

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

Чтобы экспортировать историю текущей сессии в детализированный XML-файл, используйте Export-Clixml:

Get-History | Export-Clixml -Path c:\users\name\desktop\commands.xml

Экспортируемый XML содержит поля StartExecutionTime и EndExecutionTime для каждой команды — это полезно для аудита, анализа времени выполнения или воспроизведения сессии.

Экспорт истории команд в XML-файл на рабочем столе

Чтобы импортировать ранее сохранённую историю в текущую сессию, используйте Add-History совместно с Import-Clixml:

Add-History -InputObject (Import-Clixml -Path C:\users\name\desktop\commands.xml)

После выполнения этого Get-History покажет записи, импортированные из XML.

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

Практическая шпаргалка (Cheat Sheet)

  • Просмотр истории: Get-History
  • Подробный вывод: Get-History | Format-List -Property *
  • Поиск по истории: Get-History | Select-String -Pattern “text”
  • Выполнение по Id: Invoke-History
  • Очистка: Clear-History
  • Экспорт: Get-History | Export-Clixml -Path <путь>.xml
  • Импорт: Add-History -InputObject (Import-Clixml -Path <путь>.xml)
  • Буфер терминала: Up/Down/F8

Когда это не сработает или ограничено

  • PowerShell не хранит историю между закрытиями окна, если вы не экспортили её вручную. Это ограничение стандартной конфигурации.
  • Некоторые терминалы (например, альтернативные эмуляторы) могут иметь собственное поведение буфера, отличное от стандартного PowerShell ISE/Console.
  • Команды, выполненные в сеансах с повышенными привилегиями или через удалённые сессии (Enter-PSSession/Invoke-Command), могут не отображаться в локальной истории.

Альтернативные подходы

  • Автоматический экспорт при выходе: добавьте в профиль PowerShell (прфайл) скрипт, который при завершении сессии экспортирует текущую историю в файл с меткой даты.
  • Используйте журналирование команд на уровне оболочки (например, Transcription в PowerShell: Start-Transcript/Stop-Transcript) для полного логирования сессии, включая вывод.
  • Для централизованного аудита используйте решения SIEM или агентский сбор логов, если нужно фиксировать команды на серверах.

Пошаговая методика: как настроить автоматический экспорт истории при закрытии сессии

  1. Откройте профиль PowerShell: notepad $PROFILE (создайте файл, если его нет).
  2. Добавьте функцию для экспорта истории в конец файла:
Register-EngineEvent PowerShell.Exiting -Action {
  $path = "$env:USERPROFILE\Documents\powershell_history_$(Get-Date -Format 'yyyyMMdd_HHmmss').xml"
  Get-History | Export-Clixml -Path $path
}
  1. Сохраните профиль и перезапустите PowerShell. При закрытии сессии история будет сохраняться в документе с отметкой времени.

Примечание: такой подход создаёт файлы на каждой сессии — добавьте ротацию или очистку старых файлов по необходимости.

Чек-лист по ролям

  • Администратор

    • Настроить автоматический экспорт истории на рабочих станциях/сервере.
    • Контролировать доступ к экспортированным XML (не храните секреты в общедоступном месте).
    • Настроить централизованный сбор логов для аудита.
  • Разработчик

    • Экспортируйте историю перед крупными изменениями для возможности отката.
    • Используйте Start-Transcript для записи сессий с выводом.
  • Операционный инженер

    • Импортируйте историю в тестовой среде для воспроизведения шагов устранения инцидента.
    • Проверяйте временные метки StartExecutionTime/EndExecutionTime для анализа длительности команд.

Безопасность и приватность

  • Экспортированная история может содержать команды с аргументами, которые включают пароли или секреты. Перед передачей XML-файлов коллегам или хранением в общем доступе убедитесь, что в командах нет чувствительных данных.
  • Храните экспортированные файлы в защищённых каталогах с ограниченным доступом. Для соответствия местным требованиям по защите данных (например, GDPR) рассмотрите шифрование файлов и контроль доступа.

Короткий глоссарий (1 строка на термин)

  • Буфер командной строки: встроенное поведение терминала для навигации по предыдущим строкам ввода (Up/Down/F8).
  • Get-History: cmdlet, возвращающий внутреннюю историю сессии PowerShell.
  • Invoke-History: cmdlet для выполнения команды из истории по её Id.
  • Clear-History: cmdlet для очистки внутренней истории текущей сессии.
  • Export-Clixml / Import-Clixml: cmdlet’ы для сериализации и десериализации объектов PowerShell в XML.

Заключение

PowerShell предоставляет как быстрый буфер терминала для навигации по последним строкам ввода, так и объектную историю команд с метаданными для аудита и воспроизведения. Используйте экспорт/импорт, если нужно сохранять историю между сессиями, и не забывайте о безопасном хранении экспортированных файлов.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство