Добавление новой строки в PowerShell
При выводе скриптового результата в консоль или текстовый файл вы часто хотите отформатировать его для удобочитаемости. Распространенный способ сделать это в PowerShell — использовать переносы строк, которые заставляют следующую часть вывода начинаться с новой строки.
Переносы строк всегда немного сложные в большинстве языков сценариев или программирования, но с помощью `n и `r мы можем легко заставить содержимое перейти на новую строку.
В этой статье я покажу вам, как использовать символы новой строки в PowerShell.
Новая строка в PowerShell
Чтобы продолжить вывод в PowerShell на новой строке, мы можем использовать специальные символы `n` и `r`. Первый используется для разрыва строки, а второй - для возврата каретки. Теперь это различие важно понимать, когда дело касается использования этих символов.
Символ `n (перевод строки) является символом новой строки (ASCII 10, LF), который перемещает курсор вниз на следующую строку.
Write-Host "String that we want to show `non two lines"
Result
String that we want to show
on two lines
Теперь важно отметить в приведенном выше примере, что мы не добавляем пробел после символа новой строки. Если вы добавите пробел после специального символа, то новая строка начнется с пробела, чего вы не хотите.
В `r - это символ возврата каретки (ASCII 13, CR), который перемещает курсор обратно в начало строки. Если вы используете его без символа новой строки, то вы перезапишете свой существующий вывод, как вы можете видеть в примере ниже:
Write-Host "String that we want to show `ron a new line"
Result
on a new linee want to showPowerShell сначала выведет на экран строку "Строка, которую мы хотим показать", а затем курсор возвращается в начало строки, и остальная часть вывода "на новой строке" заменит первые символы существующей строки.
Сочетание `r и `n
В Windows мы обычно используем оба специальных символа для создания новой строки. В наши дни это уже не так необходимо, но таким образом вы можете быть уверены, что это работает со всеми приложениями на Windows.
Если вы используете скрипты PowerShell только на системах на базе Unix, то вам достаточно использовать только символ новой строки.
Итак, продолжайте вывод на новой строке в Windows, рекомендуется использовать следующее:
Write-Host "String that we want to show `n`ron two lines"Чтение файла с сохранением переносов строк
Когда вы читаете текстовый файл с помощью PowerShell, все строки по умолчанию форматируются в одну длинную строку. Однако мы можем сохранить информацию о новых строках, используя параметр -raw с командлетом Get-Content.
Параметр -raw будет считывать все содержимое файла, сохраняя оригинальные разрывы строк. Таким образом, когда вы выводите скрипт, разрывы строк будут показаны:
$fileContent = Get-Content -Path "C:\temp\multiline.txt" -Raw
Write-Host $fileContentЗапись команд на новой строке
Еще один распространенный вопрос о PowerShell заключается в том, как записать часть команды на новой строке. Длинные команды в одной строке сложнее читать, поэтому иногда вам хочется продолжить свою команду на новой строке.
Лучший способ сделать это - использовать Splatting, это метод, при котором вы добавляете параметры в хеш-таблицу. Но это не всегда возможно или целесообразно. В таких случаях мы можем использовать символ `, чтобы разбить команду на новую строку.
Пример ниже, возможно, немного экстремален, но он дает вам хорошее представление о том, как разбиение вашей команды на несколько строк улучшает читаемость в PowerShell:
Get-ChildItem -Path C:\Users `
-Recurse `
-Filter *.txt `
-File `
| Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) } `
| Select-Object Name, CreationTime, Length `
| Sort-Object CreationTime -Descending `
| Format-Table -AutoSizeЗаключение
Использование новых строк в PowerShell не только улучшает читаемость вашего вывода, но и упрощает длинные команды. Когда дело доходит до разрывов строк в выводе, я рекомендую использовать оба специальных символа для максимальной совместимости, но имейте в виду, что использование только `n также возможно.
Надеюсь, вам понравилась эта статья. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.

