2011-03-30 63 views
7

我试图找出如何使用时,以消除换行符添加内容PowerShell中添加内容换行

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

而且我使用了文件-append添加内容去,但都产生SIM卡伊拉尔的结果,有人可以解释一下我如何消除休息?

回答

10

我想你想拥有与信息一条线,则:

"$server Uptime: $($uptime.days) Days, $($uptime.hours) Hours, $($uptime.minutes) Minutes" | add-content $output_file 

如果每个项目应该是在单独的线,你可以添加

"$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;每个对象都存储在自己的行中。

+0

谢谢,这个效果很好!这也让我更好地理解我做错了什么。 – powershellrookie 2011-03-30 07:01:17

+0

添加了关于导致换行的原因的信息:) – stej 2011-03-30 07:11:53

1

避免任何问题的最简单方法PowerShell可能会放入换行符将避免使用提供程序。

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

希望这有助于

1

怎么样

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