Программирование

Как разбить команду PowerShell на несколько строк чисто

Узнайте, как использовать неявное и явное продолжение строк в PowerShell, включая escape‑символ обратной кавычки, чтобы разбивать команды на несколько строк.

Как разбить команду PowerShell на несколько строк? Существует ли символ продолжения строки или синтаксис, похожий на подчеркивание (_) в Visual Basic?

Содержание

Неявное продолжение строки

Самый распространённый способ разбить команду – закончить строку токеном, который говорит PowerShell, что ожидается ещё ввод, например.

Токен Значение Пример
- Часть параметра, продолжающегося на следующей строке Get-Process -Name
"powershell"
` ` Оператор конвейера
( Открывающая скобка Get-Content (Get-Item
"C:\temp\file.txt")
{ Открывающая фигурная скобка (для блоков скриптов) if ($true) {
Write-Host "Hello"
}
[ Открывающая квадратная скобка (массив или хэш) @(
"one",
"two"
)
, Запятая (разделитель списка) -Exclude
"temp",
"cache"

Поскольку парсер знает, что оператор не завершён, он автоматически продолжает чтение на следующую строку.

Пример

powershell
Get-Process `
    -Name "powershell" `
    | Where-Object `
        { $_.CPU -gt 100 } `
    | Sort-Object `
        -Property CPU `
        -Descending

Как отмечено в документации PowerShell о неявном продолжении, парсер действительно продолжает чтение, пока не встретит полностью завершённую инструкцию.

Явное продолжение строки

Когда нужно разорвать строку‑литерал, экранировать специальный символ или убедиться, что пробелы и управляющие символы не мешают команде, PowerShell использует обратную кавычку (`) как символ экранирования и продолжения строки.

Ключевые правила

  1. Размещайте обратную кавычку в самом конце строки, без пробелов после неё.
  2. Кавычка экранирует перевод строки и любые последующие символы, которые иначе были бы интерпретированы (например, комментарий).
  3. Можно использовать внутри строк, но это часто делает код нечитаемым.

Пример

powershell
# Разделение длинной строки
$long = "This is a very long string that we " `
        + "want to split across multiple lines for " `
        + "readability."

# Экранирование комментария
Get-ChildItem `
    -Path "C:\Windows" `
    # -Recurse  # Этот комментарий будет проигнорирован из‑за обратной кавычки

Использование ` как символа экранирования описано в руководстве по экранирующим символам PowerShell.

Когда стоит использовать

  • Внутри строки, содержащей перенос, который нужно сохранить.
  • Когда нужно экранировать символ, который иначе завершил бы команду (например, # или &).
  • В редких случаях, когда неявное продолжение невозможно (например, односоставная команда, оканчивающаяся пунктуацией, которую парсер считает завершённой).

Лучшие практики и распространённые ошибки

Практика Обоснование Примечания
Предпочитать неявное продолжение Чистый код, меньше экранирующих символов Работает с большинством команд и конвейеров
Избегать пробелов после обратной кавычки Кавычка должна быть последним символом Один пробел ломает продолжение
Использовать @() или @{} для многострочных массивов или хэштейблов Улучшает читаемость Нет необходимости в обратной кавычке, если строки заканчиваются запятой или открывающей скобкой
Сохранять длину строки в пределах 80–120 символов Удобство чтения Используйте обратную кавычку только при действительно длинных строках
Тестировать команды в консоли перед скриптованием Предотвращает синтаксические ошибки Парсер PowerShell подсветит пропущенные кавычки

Руководство по лучшим практикам Microsoft PowerShell рекомендует ограничивать использование обратной кавычки случаями, когда неявное продолжение невозможно.


Заключение

  • Неявное продолжение (заканчивая строку -, |, (, {, [, или ,) – самый простой и рекомендуемый способ разбивать команды.
  • Обратная кавычка (`) – явный символ продолжения, который следует использовать только для строк‑литералов, экранирования специальных символов или в случаях, когда неявное продолжение не работает.
  • Не оставляйте пробелов после обратной кавычки и отдавайте предпочтение неявному продолжению, чтобы скрипты оставались чистыми и поддерживаемыми.
  • Тестируйте многострочные команды в консоли, чтобы быстро выявить синтаксические ошибки.

Следуя этим рекомендациям, вы сможете писать PowerShell‑скрипты, которые будут читабельными и надёжными при работе с несколькими строками.

Авторы
Проверено модерацией
Модерация