Разрывы строк надстроек 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, поэтому вам нужно будет передать ему абсолютный путь.

Надеюсь это поможет,

Другие вопросы по тегам