Как изменить цвет текста в PowerShell?

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

Понимание escape-кодов ANSI

Escape-коды ANSI (Американского национального института стандартов) — это специальные последовательности символов, которые управляют местоположением курсора, стилем текста и другим форматированием вывода в терминальных приложениях.

Для изменения цвета текста используется базовый формат escape-кода ANSI:

33[#;#m

Где первый # указывает стиль (например, полужирный, подчеркнутый), а второй # указывает код цвета текста.

Распространенные коды стилей текста

Код Эффект
0 Сброс / Обычный
1 Жирный
4 Подчеркнутый

Распространенные коды цветов текста

Код Цвет
30 Черный
31 Красный
32 Зеленый
33 Желтый
34 Синий
35 Пурпурный
36 Голубой
37 Белый

Таким образом, объединив стиль и цветовой код в формате 33[style;color;m, вы можете создать цветной текст. Например:

  • 33[1;31m = Жирный красный
  • 33[4;33m = Подчеркнутый желтый
  • 33[1;37m = Жирный белый (яркий цвет)

Изменение цвета текста в PowerShell

Чтобы фактически использовать эти управляющие коды ANSI для раскрашивания текста в PowerShell, вам просто нужно обернуть коды вокруг текстовых строк, которые вы хотите раскрасить.

Вот простой пример, который выводит цветной текст на консоль:

“`powershell
Write-Host “33[31mЭтот текст красный33[0m”
Write-Host “33[33mЭтот текст желтый33[0m”
Write-Host “33[32mЭтот текст зеленый33[0m”
“`

Код 33[0m сбрасывает стиль текста до обычного. Это позволяет вам объединять последовательности текста разного цвета.

Вы также можете хранить escape-коды в переменных, чтобы использовать их несколько раз:

“`powershell
$red = “33[31m”
$yellow = “33[33m”
$reset = “33[0m”

Write-Host “${red}Это красный текст${reset}”
Write-Host “${yellow}Это желтый текст${reset}”
“`

Раскрашивание выходных данных скрипта

Чтобы добавить цвет к фактическим выходным данным скрипта PowerShell, вам нужно будет вставить escape-коды в строки и переменные. Например:

“`powershell
# Вывод красного текста
“Это текст ${red}red${reset}”

# Сохранение цветных строк в переменных
$redText = “${red}Какой-то красный текст${reset}”
$yellowText = “${yellow}Какой-то желтый текст${reset}”

# Вывод переменных с цветами
Write-Host “Вот красный: $redText”
Write-Host “Вот желтый: $yellowText”
“`

Вы также можете вставлять коды непосредственно в команды:

“`powershell
Write-Host “${red}Это предупреждающее сообщение!${reset}”
“`

Раскрашивание вывода статуса

Для простых сообщений об успешном/неуспешном выполнении вы можете использовать зеленый/красный текст:

“`powershell
if ($processFailed) {
Write-Host “${red}Процесс не выполнен!${reset}”
} else {
Write-Host “${green}Процесс выполнен успешно!${reset}”
}
“`

Раскрашивание информационного вывода

Чтобы выделить ключевые части информационного вывода, используйте цвета для привлечения внимания:

“`powershell
Write-Host “${red}важное значение${reset} — ${yellow}1${reset}.”
“`

Раскрашивание заголовков

Добавьте цвет к заголовкам, чтобы визуально разделить различные разделы вывода:

“`powershell
Write-Host “${green}===== Список пользователей =====${reset}”
# Вывод списка пользователей здесь
Write-Host “${blue}===== Дисковое пространство =====${reset}”
# Вывод дискового пространства здесь
“`

Ограничения escape-кодов ANSI

Существует несколько ограничений, о которых следует знать при использовании escape-кодов ANSI в PowerShell:

  • Они работают только в окнах консоли PowerShell, но не в окнах ISE или отладочной консоли
  • Их необходимо правильно экранировать как строки PowerShell
  • Они добавляют дополнительные символы, которые могут сбить сравнение строк
  • Поддерживается только базовая стилизация и раскрашивание

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

Альтернативные параметры

Если вам нужно более продвинутое форматирование и стилизация текста, есть несколько модулей PowerShell, которые могут помочь:

PSColor Модуль

Модуль https://github.com/daviwil/PSColor предоставляет командлеты для стилизации текста и фоновых цветов, включая поддержку конвейера и простые в использовании псевдонимы.

Модуль Pansies

Модуль https://github.com/PoshCode/Pansies предоставляет функции PowerShell для форматирования ANSI, баннеров ASCII и спиннеров для вывода на терминал.

Модуль Terminal-Icons

https://github.com/devblackops/Terminal-Icons позволяет включать глифы и значки в вывод терминала.

Заключение

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