Совет по PowerShell: осваиваем журнал командлетов PowerShell с PSReadLine

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


Почему важно управлять журналом командлетов

Представьте, что вы многократно выполняете сложную последовательность команд или устраняете неполадки в сценарии, занимающем несколько строк. Вместо того чтобы заново вводить команды или искать старые сценарии, вы можете обратиться к журналу командлетов для быстрого повторного использования. С помощью PSReadLine, вы можете пойти ещё дальше, настроив работу под себя и включив прогностический IntelliSense.


Доступ к журналу командлетов

PowerShell автоматически сохраняет журнал команд в файле, что упрощает его просмотр и редактирование. Вот как получить к нему доступ:

Расположение файла журнала командлетов

Файл журнала командлетов находится по адресу:
C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

Шаги по управлению журналом командлетов

  1. Найдите файл
    Откройте папку и найдите файл с именем ConsoleHost_history.txt.
  2. Отредактируйте файл
    Используйте любой текстовый редактор (например, Блокнот или VS Code), чтобы добавлять, удалять или изменять команды.
  3. Создайте ярлык
    Создайте ярлык для файла на рабочем столе для быстрого доступа.

Типичный сценарий использования

Типичный сценарий — повторное использование последовательности команд для обслуживания сервера. Например, если вы часто выполняете команды для перезапуска служб, проверки журналов или настройки параметров, вы можете сохранить эти команды в файле журнала для быстрого доступа.


Раскрываем весь потенциал PSReadLine

PSReadLine — это модуль, улучшающий работу с консолью PowerShell. Он предоставляет такие возможности, как подсветка синтаксиса, прогностический IntelliSense и настраиваемые сочетания клавиш, что упрощает работу с PowerShell.

Ключевые возможности PSReadLine

  1. Подсветка синтаксиса
    Выделяет синтаксические ошибки и делает команды более читаемыми.
  2. Прогностический IntelliSense
    Автоматически предлагает команды на основе вашего журнала или подключаемых модулей.
  3. Настраиваемые сочетания клавиш
    Назначайте клавиши пользовательским действиям для более быстрого выполнения.
  4. Многострочное редактирование
    Редактируйте и выполняйте многострочные команды без затруднений.
  5. Динамическое отображение справки
    Показывает справочную информацию прямо в консоли, не заставляя вас терять место.

Практические сценарии использования PSReadLine

Сценарий 1: автоматизация повторяющихся задач

Допустим, вы часто перезапускаете веб-сервер и проверяете его состояние. Вместо того чтобы каждый раз вводить эти команды, вы можете сохранить их в журнале или привязать к сочетанию клавиш.

Restart-Service -Name "WebServer"
Get-Service -Name "WebServer" | Select-Object Status

Сценарий 2: прогностический IntelliSense для более быстрого поиска команд

Прогностический IntelliSense помогает быстро находить и выполнять команды. Например, если вы часто используете Get-Process, ввод «Get» предложит команды из вашего журнала, в том числе Get-Process.

Чтобы включить прогностический IntelliSense:

Set-PSReadLineOption -PredictionSource History

Сценарий 3: настраиваемые сочетания клавиш для повышения эффективности

Вы можете привязать клавишу для быстрого поиска назад по журналу команд:

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Или создайте пользовательскую привязку, чтобы сохранить команду в журнале, не выполняя её:

$parameters = @{
    Key = 'Alt+w'
    ScriptBlock = {
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
    }
}
Set-PSReadLineKeyHandler @parameters

Сценарий 4: безопасное управление журналом команд

PSReadLine отфильтровывает конфиденциальные данные, такие как пароли и токены, из файла журнала, чтобы защитить вашу безопасность. Например:

$password = 'MySecurePassword'
Set-Secret -Name "MySecret" -SecretValue $password

Эти команды не будут сохранены в файле журнала.


Установка PSReadLine

PSReadLine доступен в коллекции PowerShell. Чтобы установить его, выполните:

Install-Module -Name PSReadLine -AllowClobber -Force

Примечание: Для PSReadLine требуется PowerShell 5.1 или новее. Он работает с Терминалом Windows, Visual Studio Code и стандартным консольным узлом Windows, но не с Windows PowerShell ISE.


Основные моменты версий

PSReadLine значительно развился с момента первого выпуска в Windows PowerShell 5.1. Ключевые версии:

  • v2.3.6: поставляется с PowerShell 7.4.7 и 7.5.0
  • v2.3.4: внесены улучшения в очистку конфиденциальных данных.
  • v2.2.6: улучшены многострочное редактирование и прогностический IntelliSense.

Подробнее см. примечания к выпуску about_PSReadLine.


Узнайте больше о PSReadLine

Дополнительные возможности и примеры см. в официальной документации:

Оставить комментарий