История команд в Windows 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 введённых команд. Чтобы изменить это значение:
- Щёлкните правой кнопкой по заголовку окна PowerShell.
- Выберите “Properties”.
- В разделе Command History измените значение “Buffer Size”.

Важно: буфер терминала и внутренняя история PowerShell — разные вещи. Очистка одной не всегда затрагивает другую.
Как посмотреть историю PowerShell
Вторая, внутренняя история — это объектная история, доступная через встроенные cmdlet’ы PowerShell. Она хранит записи о выполненных командах в текущей сессии и позволяет получить подробные метаданные.
Чтобы вывести историю команд, выполните:
Get-History
Поиск по истории можно выполнить, отправив вывод в Select-String и указав шаблон поиска. Замените “Example” на искомый текст:
Get-History | Select-String -Pattern "Example"
Чтобы получить максимально подробную информацию по каждой записи (статус выполнения, время начала и окончания), используйте форматирование списка всех свойств:
Get-History | Format-List -Property *
По умолчанию Get-History показывает только 32 последних записи. Если вам нужно больше записей, используйте параметр -Count, например:
Get-History -Count 1000Примеры расширенного поиска и вывода:
Get-History -Count 1000 | Select-String -Pattern "Example"
Get-History -Count 1000 | Format-List -Property *
Как выполнить команды из истории
Чтобы повторно выполнить команду из истории, используйте её Id (получается через Get-History):
Invoke-History #Для последовательного выполнения двух команд из истории можно вызвать Invoke-History дважды на одной строке, разделив команды точкой с запятой. Например, чтобы сначала выполнить команду с Id 1, а затем с Id 2:
Invoke-History 1;Invoke-History 2
Советы:
- Перед выполнением команды из истории всегда просмотрите её текст через 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 для каждой команды — это полезно для аудита, анализа времени выполнения или воспроизведения сессии.

Чтобы импортировать ранее сохранённую историю в текущую сессию, используйте Add-History совместно с Import-Clixml:
Add-History -InputObject (Import-Clixml -Path C:\users\name\desktop\commands.xml)После выполнения этого Get-History покажет записи, импортированные из 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 или агентский сбор логов, если нужно фиксировать команды на серверах.
Пошаговая методика: как настроить автоматический экспорт истории при закрытии сессии
- Откройте профиль PowerShell:
notepad $PROFILE(создайте файл, если его нет). - Добавьте функцию для экспорта истории в конец файла:
Register-EngineEvent PowerShell.Exiting -Action {
$path = "$env:USERPROFILE\Documents\powershell_history_$(Get-Date -Format 'yyyyMMdd_HHmmss').xml"
Get-History | Export-Clixml -Path $path
}- Сохраните профиль и перезапустите 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 предоставляет как быстрый буфер терминала для навигации по последним строкам ввода, так и объектную историю команд с метаданными для аудита и воспроизведения. Используйте экспорт/импорт, если нужно сохранять историю между сессиями, и не забывайте о безопасном хранении экспортированных файлов.
Важно: по умолчанию история хранится только в рамках текущей сессии — настройте автоматический экспорт или централизованный сбор логов для долгосрочного хранения.
Похожие материалы
Artfol: руководство для художников
Громкость по приложениям на Samsung Galaxy
Авто‑блокировка Windows после неверных входов
Защитить диск паролем через BIOS/UEFI
Cortana: как перевести ПК в спящий режим