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

История команд в 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
Автор
Редакция

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

Artfol: руководство для художников
соцсети

Artfol: руководство для художников

Громкость по приложениям на Samsung Galaxy
Android.

Громкость по приложениям на Samsung Galaxy

Авто‑блокировка Windows после неверных входов
Безопасность Windows

Авто‑блокировка Windows после неверных входов

Защитить диск паролем через BIOS/UEFI
Безопасность

Защитить диск паролем через BIOS/UEFI

Cortana: как перевести ПК в спящий режим
Windows

Cortana: как перевести ПК в спящий режим

Live Captions на iPhone, iPad и Mac — включение и настройка
Доступность

Live Captions на iPhone, iPad и Mac — включение и настройка