2011-03-30 52 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)