我正在尝试弄清楚如何在使用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转到添加内容,但是两者都产生了类似的结果,有人可以解释如何消除休息吗?
答案 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
<强>更新强>
echo
是Write-Output
(Get-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)