You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Send-MailMessage变量Body保留CRLF的方法咨询

解决PowerShell读取日志文件后换行丢失的问题

当你用Get-Content读取文件时,默认会返回一个字符串数组,数组里的每个元素对应文件的一行。当你把这个数组放到双引号里(比如"$($Body)")或者传递给需要字符串的参数时,PowerShell会自动用空格把数组元素拼接起来,导致原本的换行符丢失。

要保留CRLF换行,有几种简单的解决方法:

  • 方法1:使用-Raw参数读取完整字符串
    PowerShell 3.0及以上版本支持-Raw参数,它会直接把整个文件读取成单个包含所有换行符的字符串:

    $Body = Get-Content .\TTT.txt -Raw
    

    这样$Body里就保留了文件原始的CRLF,无论是输出还是传给Send-MailMessage的Body参数,换行都会正常显示。

  • 方法2:用.NET方法读取(兼容旧版本PowerShell)
    如果你的PowerShell版本低于3.0,没有-Raw参数,可以用.NET的ReadAllText方法直接读取完整文件内容:

    $Body = [System.IO.File]::ReadAllText((Resolve-Path .\TTT.txt).Path)
    
  • 方法3:手动拼接数组为带换行的字符串
    要是已经拿到了数组形式的内容,可以用-join运算符指定换行符来拼接:

    $Body = Get-Content .\TTT.txt -join "`r`n"
    

    这里用"rn"对应Windows的CRLF换行,如果你需要Unix风格的LF,换成"n"即可。

把处理后的$Body传给Send-MailMessage的Body参数,邮件里就能正确显示换行格式了。

内容的提问来源于stack exchange,提问作者tfonias74

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:55:33