Powershell添加内容换行符

时间:2011-03-30 06:07:54

标签: powershell line-breaks

我正在尝试弄清楚如何在使用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 replace lose line breaks

此外,我从使用out-file -append转到添加内容,但是两者都产生了类似的结果,有人可以解释如何消除休息吗?

3 个答案:

答案 0 :(得分:12)

我想你想要有一行信息,然后:

"$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

<强>更新 echoWrite-OutputGet-Alias -name echo)的别名,在您的情况下会生成对象数组。该数组传递给Add-Content;每个对象都存储在自己的行中。

答案 1 :(得分:1)

回避任何问题的最简单方法是PowerShell可能会在换行符中使用提供商。

通过使用[IO.File] :: WriteAllText来编写文件,您应该能够避免来自PowerShell的换行符。唯一需要注意的是[IO.File] :: WriteAllText不能理解PowerShell路径,所以你需要传递一个绝对路径。

希望这有帮助,

答案 2 :(得分:1)

怎么样

[IO.File]::AppendAllText($testfile,"abc",[System.Text.Encoding]::UTF8)