История команд в сеансе работы оболочки Windows PowerShell
Оболочка Windows PowerShell предоставляет пользователю специальный журнал сеанса или журнал команд, в котором хранятся вводимые во время сеанса команды, с возможностью их повторного использования. По умолчанию, Window оболочка PowerShell хранит последние 64 команды, для изменения этого значения надо изменить параметры переменной $MaximumHistoryCount. Например:
PS C:\> $MaximumHistoryCount 64 PS C:\> $MaximumHistoryCount=100 PS C:\> $MaximumHistoryCount 100
Вы можете автоматизировать свои действия, применяя специальные клавиши (курсор вверх и курсор вниз) для выбора той или иной команды из журнала событий. Также можно ввести лишь команды, начинающиеся с определенных символов и нажать на клавишу F8, тем самым можно будет просмотреть лишь команды по шаблону. Для отображения всех системных команд, сохранившихся в журнале надо нажать клавишу F7 – на выходе получим окно со списком, каждый элемент списка имеет свой порядковый номер. Нажатие F9 позволяет по порядковому номеру получить нужную команду.
В оболочке PowerShell Windows есть набор командлетов для работы с журналом событий. Давайте введем в окне консоли следующую команду:
PS C:\ > get-help *-history -detailed
На выходе мы получаем справку по трем командлетам:
Get-History – возвращает список команд введенных пользователем во время сеанса работы, псевдонимы: h, history и ghy, например:
PS C:\ > get-history Id CommandLine -- ----------- 1 $MaximumHistoryCount 2 $MaximumHistoryCountGet-History 3 Get-History 4 $MaximumHistoryCountGet-History 5 set-history 6 get-help *-history 7 get-help *-history -detayl 8 get-help *-history -detailed
Командлет выводит последние 32 команды, для изменения этого значения используется параметр –Count, например:
PS C:\ > get-history -count 5 Id CommandLine -- ----------- 5 set-history 6 get-help *-history 7 get-help *-history -detayl 8 get-help *-history -detailed 9 get-history
Тут мы вывели список из последних 5 элементов.
Как и в Windows CMD, оболочка PowerShel поддерживает конвееризацию, например:
PS C:\ > Get-History | Where-Object {$_.CommandLine -like "*$*"} Id CommandLine -- ----------- 1 $MaximumHistoryCount 2 $MaximumHistoryCountGet-History 4 $MaximumHistoryCountGet-History
Тут мы вывели список из тех команд, которые содержат в себе символ $.
Та же конвееризация позволяет экспортировать список во внешний файл в формате XML или CSV например:
PS С:<em>\> em>Get-History | Export-Clixml d:\data\history.xml
Add-History – предоставляет возможность добавлять команды в журнал сеанса. Для получения справки по данному командлету надо ввести в окне оболочки PowerShell Windows:
PS C:\ > get-help Add-History –full
Так, используя конвееризацию, мы можем добавить в журнал сеанса команды, сохраненные в файле history.xml:
PS С:\> Import-Clixml d:\data\history.xml | Add-History
Invoke-History – данный командлет(псевдонимы r и ihy) позволяет выполнить команду из журнала события по заданному порядковому номеру или первым символам. Например:
Вызов последней команды:
PS C:\> Invoke-History
Вызов пятой команды по ее порядковому номеру:
PS С:\> Invoke-History -Id 5
или просто
PS С:\> r 5
Вызов последней команды Get-Help:
PS C:\> Invoke-History Get-He
Вызов команд, полученных по конвейеру от командлета Get-History:
PS C:\> Get-History | Where-Object ($_.CommandLine -like "*$*"} | Invoke-History
Помимо истории вводимых команд, оболочка Windows PowerShell позволяет сохранить весь сеанс работы, для этого используется Start-Transcript (для остановки протоколирования надо ввести Stop-Transcript):
PS C:\ > get-help Start-Transcript ИМЯ Start-Transcript ОПИСАНИЕ Создает запись всего сеанса оболочки Windows PowerShell или его части в текстовом файле. СИНТАКСИС Start-Transcript [[-path] <string>] [-force] [-noClobber] [-append] [-whatIf] [-confirm] [<CommonParameters>]
Тут:
-path – параметр который определяет путь (string) к текстовому файлу-протоколу, указывать надо явно без постановочных знаков. Если не задавать путь вручную и запустить командлет без параметров, то протокол будет сохранен в файле, путь к которому задан в значении глобальной переменной $Transcript. Если эта переменная не определена, то командлет Start-Transcript сохраняет протоколы в каталоге “$Home\Мои документы” в файлах “PowerShell_transcript.<метка времени>.txt” (в переменной $Home хранится путь к домашнему каталогу работающего пользователя). Оболочка Windows PowerShell. Например:
PS C:\ > Start-Transcript -Path d:\data\protokol.txt
Транскрибирование запущено, выходной файл d:\data\protokol.txt
Для остановки ведения протокола для текущего сеанса PowerShell Windows оболочки надо ввести:
PS C:\ > stop-transcript
Транскрибирование остановлено, выходной файл D:\data\protokol.txt
Если файл протокола уже существует, то по умолчанию он будет перезаписан.
-append – параметр позволяет включить режим добавления нового протокола к уже созданному файлу.
-NoClobber – если этот параметр указан, а файл протокола уже существует, то командлет start-Transcript оболочка Windows PowerShell не выполняет никаких действий.
Советую почитать:
Опубликовано в рубрике PowerShell