посмотреть историю команд powershell
Как в Windows 10 просматривать и сохранять историю команд CMD и PowerShell
Работая в классической командной строке или PowerShell, вы в любой момент можете нажать F7 и просмотреть историю всех выполненных команд. И не только просмотреть, но и выбрать любую из них. Это очень удобная и полезная функция, которая позволяет экономить время при повторном наборе команд, но пользоваться ее преимуществами получится только в текущем сеансе.
Как только сессия закрывается, вся история команд тут же удаляется. Если вас это не устраивает, и вы хотите сохранять историю так, чтобы она была доступна и после закрытия консоли, придется обратиться к ее расширенным возможностям. Поддерживаются таковые и классической командной строкой, и более совершенным ее аналогом PowerShell.
Командная строка
Для получения списка выполненных команд помимо клавиши F7 можно использовать специальную команду doskey с ключом history. История выводится непосредственно в консоль и также доступна только в текущей сессии, поэтому для ее сохранения используем обычное перенаправление в файл, например, вот так, дешево и сердито:
doskey /history > C:/20.05.20.log
Формат файла истории не обязательно должен быть LOG, уместны также форматы TХT, HTML, CSV и даже RTF.
Утилита PowerShell
В случае с консолью PowerShell всё куда интереснее. Начиная с пятой версии консоль сохраняет все введенные и выполненные командлеты в текстовый лог ConsoleHost_history.tхt, расположенный по пути %userprofile%/AppData/Roaming/Microsoft/Windows/PowerShell/PSReadline.
Даже если вы завершите сессию в консоли и выключите компьютер, команды останутся сохраненными и будут доступны для вызова в PowerShell нажатием клавиши «Стрелка вверх». Каждое нажатие выводит предыдущую команду, но можно отобразить и весь список выполненных команд сразу. Делается это так:
Отвечающий за историю модуль поддерживает и другие функции. Если вы введете команду Get-PSReadlineOption, то получите в консоли приличный список доступных параметров. Ознакомиться с их назначением можно в официальной документации к PowerShell, но смысл некоторых из них понятен и так. К примеру, нетрудно догадаться, что ключ MaximumHistoryCount устанавливает максимальное число элементов, сохраняемых в список истории.
В целом, начинающему администратору вполне должно хватить данного функционала для облегчения работы в консоли. Если же вдруг при выполнении любой из приведенных выше команд появится ошибка «имя командлета не распознано», это с большой долей вероятности укажет на отсутствие требуемого модуля. Установить его в Windows 10 с PowerShell v5 можно командой Install-Module PSReadLine с последующим разрешением на подключение поставщика NuGet.
Как просмотреть историю команд из предыдущих сессий PowerShell в Windows 10
Windows PowerShell позволяет просматривать историю команд, выполненных во время текущего сеанса, с помощью команды Get-History. В сегодняшней статье мы рассмотрим как просмотреть полную историю команд всех предыдущих сессий в Windows 10.
Посмотреть историю команд из предыдущих сессий PowerShell
1. Чтобы использовать функциональность истории команд PowerShell, необходимо сначала установить модуль PSReadLine, введите команду Install-Module PSReadLine и нажмите Enter. Для продолжения требуется поставщик NuGet, нажмите Y на клавиатуре
2. Нажмите Y и Enter.
3. Чтобы посмотреть историю команд введите cat (Get-PSReadlineOption).HistorySavePath и нажмите Enter.
Чтобы посмотреть команды в текстовом файле, введите команду (Get-PSReadlineOption).HistorySavePath и нажмите Enter. Вы увидите путь к текстовому файлу.
Чтобы очистить историю команд введите Remove-Item (Get-PSReadlineOption).HistorySavePath и нажмите Enter.
Как в Powershell History смотреть и использовать историю команд
Что бы увидеть все команды по работе с историей выполните:
Вся история хранится в рамках текущей сессии и поэтому, если вы закрыли окно Powershell, вся история будет потеряна.
У Get-History есть алиас history, так что можно использовать что вам удобнее.
С помощью этого командлета мы получим всю историю:
У нас доступно два параметра:
Следующий командлет исполнит команду по её id:
Вместо ID можно написать и часть команды, но исполнится именно та, которая употреблялась чаще всего:
Если сомневаетесь какая команда выполнится, то можете использовать ключ WhatIF, который сэмулирует действия без каких либо изменений.
Если у нас целый ряд команд, который мы хотим выполнить, то можно просто передать их через цикл. В моем случае это команделты с 162 по 166:
Мы можем выгрузить данные в csv с Powershell:
Как работать с WMI в Powershell
Затем импортировать и добавить в историю команды:
Отмечу, что команды импортируются под другими номерами.
Для очистки истории:
Очистить историю можно по:
Кроме этого, при получении истории у нас так же есть данные по времени запуска и окончании работы команд:
sergey vasin
The IT blog
История команд в Windows PowerShell v5
В бете Windows PowerShell v5 присутствует интересная возможность — сохраняемая история команд.
Например, вы набрали и выполнили сложный запрос.
После чего закрыли консоль PowerShell, выключили компьютер и ушли домой.
Придя утром вы запустили Windows PowerShell, нажали клавишу со стрелкой вверх и что вы увидели?
Правильно, последнюю введенную вами команду. И — если продолжить нажимать конпку «вверх» — не только последюю.
История по-умолчанию сохраняется в папке %userprofile%\AppData\Roaming\PSReadline отдельно для консоли PowerShell и для ISE (хотя в билде 10122 для ISE это еще вроде как не работает).
Настраивается эта функция при помощи командлетов Get-PSReadlineOption и Set-PSReadlineOption.
Запустив Get-PSReadlineOption можно получить текущие настройки. Нас интересуют значения: AddToHistoryHandler, HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath и HistorySaveStyle.
Изменить эти значения можно посредством одноименных параметров командлета Set-PSReadlineOption.
В частности, параметр HistoryNoDuplicates отвечает за отдельное сохранение одинаковых команд (по-видимому, пока не работает), параметр MaximumHistoryCount задает максимальное число сохраненных команд, HistorySavePath — указывает путь, где должен находится файл, в котором будет сохраняться история.
Параметр HistorySaveStyle может принимать одно из трех значений: SaveAtExit — что указывает, что история должна сохраняться при закрытии консоли, SaveIncrementally — сохраняет команды при выполнении и является значением по умолчанию, SaveNothing — отключает сохранение истории.
Параметр HistorySearchCaseSensitive имеет отношение к функционалу, который в по умолчанию привязан к клавишам F8 — HistorySearchBackward и Shift+F8 — HistorySearchForward. Привязка настраивется командлетом Set-PSReadlineKeyHandler.
В чем состоит эта функциональность?
Например, если полсотни строк назад вы написали некую нужную команду
и уже не очень помните из чего же именно она состояла, а нажимать кнопку «вверх» те же самык полсотни раз большого желания нет, то вы можете сделать так. Набираете первые символы искомой строки, например
и нажимаете F8. Консоль предложит вам ближайшую (с точки зрения истории) команду, начинающуюся с этих символов. Посторное нажатие F8 перейдет на предыдущую команду с этими символами в начале и т.д.
Сочетание Shift+F8 отличается только тем, что выполняет поиск в другом направлении. Например, вы три раза нажали F8 и поняли, что второй вариант вам подходил больше. В этом случае вам как раз и поможет Shift+F8.
Параметр HistorySearchCursorMovesToEnd теоретически должен указывать, должен ли курсор переходить в конец строки при поиске в истории команд, однако, по-видимому, в текущем билде от также не работает (точнее работает все время, так как отключить его у меня не получилось).
Параметр HistorySearchCursorMovesToEnd по-видимому призван указывать, должен ли курсор переходить в конец строки при поиске в истории команд, однако, похоже, в текущем билде от также не работает (точнее работает все время, так как отключить его мне не удалось).
Что касается параметра AddToHistoryHandler, тут, пожалуй, стоит дожаться официальной документации.
Как получить историю команд PowerShell в Windows 10
от sasza
PowerShell в Windows 10 может предоставить вам историю каждой команды, выполненной в текущем сеансе, однако для многих пользователей этого недостаточно. Им нужна история команд, выполненных за сеанс. Если вам нужно получить историю команд PowerShell, а история только для текущего сеанса не помогает, есть сценарий и файл журнала, которые могут вам помочь.
История команд Текущий сеанс
Если вы используете PowerShell 5, вы можете получить историю команд для текущего сеанса, выполнив следующую команду;
По умолчанию PowerShell может сохранять до 50 команд, но вы можете изменить это, чтобы сохранить больше. Откройте PowerShell и щелкните правой кнопкой мыши строку заголовка. В контекстном меню перейдите в Свойства. В окне «Свойства» перейдите на вкладку «Параметры». Вы увидите раздел истории команд, в котором по умолчанию установлено 50. Измените его на более высокое значение.
Журнал истории PowerShell
Чтобы просмотреть журнал истории, вам необходимо сначала установить модуль PSReadLine с помощью следующей команды;
Затем выполните следующую команду, и она вернет местоположение файла. Файл в этом месте предоставит вам полную историю каждой команды, которую вы выполняете в PowerShell.
Межсессионная история команд PowerShell
Если там нет файла, откройте PowerShell и выполните следующую команду. Он откроет ваш файл профиля в Блокноте, но этот файл не существует, и PowerShell сообщит вам об этом и спросит, хотите ли вы его создать. Разрешите ему создать файл.
Закройте открывшийся файл блокнота. В PowerShell запустите эту команду, чтобы убедиться, что вы используете PowerShell 5.
Затем установите для политики выполнения значение RemoteSigned с помощью следующей команды.
Далее вам необходимо установить ПсУрл и PSЧитать модули. Вы можете установить их с помощью следующей команды, однако, если вы получите сообщение об ошибке, просто установите их вручную в соответствии с процессом, описанным на связанных страницах, или попробуйте добавить репозиторий в качестве надежного репозитория, а затем снова запустить команду.
Теперь, когда эти модули установлены, откройте этот файл;
Вставьте следующее в этот файл и сохраните его.
Чтобы просмотреть историю команд в PowerShell, вам необходимо запустить команду Get-History, однако есть один очень важный шаг, чтобы убедиться, что ваша история сохранена. Вы НЕ МОЖЕТЕ закрыть PowerShell, нажав кнопку закрытия. Вместо этого вы всегда должны закрывать его с помощью команды выхода.
Вы можете использовать клавиши со стрелками вверх и вниз для циклического перехода между предыдущими командами.