Разрывы строк надстроек Powershell
Я пытаюсь выяснить, как устранить разрывы строк при использовании add-content
echo $server "Uptime: " $uptime.days ", Days" $uptime.hours ", Hours" $uptime.minutes ", Minutes" | add-content $output_file
В основном я пытался получить время работы сервера, чтобы перейти к текстовому файлу, и когда я делаю это, вывод выходит
HOSTNAME
Uptime:
, 2 Days
2
, Hours
15
, Minutes
Я посмотрел на этот вопрос: Powershell заменить потерять разрывы строк
Также я перешел от использования out-file -append к add-content, однако оба результата дают схожие результаты, может кто-нибудь пролить свет на то, как я могу устранить разрывы?
3 ответа
Я думаю, вы хотите иметь одну строку с информацией, а затем:
"$server Uptime: $($uptime.days) Days, $($uptime.hours) Hours, $($uptime.minutes) Minutes" | add-content $output_file
Если каждый элемент должен быть в отдельной строке, вы можете добавить `n
"$server Uptime`n$($uptime.days) Days`n$($uptime.hours) Hours`n$($uptime.minutes) Minutes" | add-content $output_file
Другая возможность заключается в использовании -f
который иногда более читабелен:
"$server Uptime: {0} Days, {1} Hours, {2} Minutes" -f $uptime.days, $uptime.hours, $uptime.minutes | add-content $output_file
Обновитьecho
псевдоним для Write-Output
(Get-Alias -name echo
), который в вашем случае производит массив объектов. Этот массив передается Add-Content
; каждый объект хранится в отдельной строке.
Как насчет
[IO.File]::AppendAllText($testfile,"abc",[System.Text.Encoding]::UTF8)
Самый простой способ обойти любую проблему, которую PowerShell может поставить в разрывы строк, - это избежать использования провайдеров.
Используя [IO.File]::WriteAllText для записи файла, вы сможете избежать разрывов строк, возникающих в PowerShell. Единственное предостережение в том, что [IO.File]::WriteAllText не понимает пути PowerShell, поэтому вам нужно будет передать ему абсолютный путь.
Надеюсь это поможет,