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

如何在PowerShell中保留Robocopy输出格式并正常邮件发送?

问题分析

你遇到的格式丢失问题,核心原因是邮件客户端默认以HTML格式渲染内容,而Robocopy的输出是依赖固定空格对齐的纯文本等宽格式——HTML会自动合并连续空格和换行,导致原本对齐的表格完全乱掉。

两种解决方案

方案1:发送纯文本邮件(最简单直接)

直接让邮件以纯文本形式发送,就能完整保留Robocopy输出的原始格式。只需要在发送邮件时指定-BodyAsHtml $false,同时把你捕获的$roboresult数组转换成带换行的字符串:

# 先把字符串数组转换成带换行的完整文本
$roboBody = $roboresult -join "`r`n"

# 发送纯文本邮件(替换成你的实际邮箱和SMTP配置)
Send-MailMessage -To "recipient@yourdomain.com" -From "sender@yourdomain.com" -Subject "Robocopy 执行结果" -Body $roboBody -BodyAsHtml $false -SmtpServer "smtp.yourdomain.com"

方案2:发送HTML邮件并保留格式(兼顾美观)

如果需要HTML邮件的样式支持,同时保留Robocopy的格式,可以把输出包裹在HTML的<pre>标签里(<pre>标签会强制保留文本的原始空格、换行和等宽排版):

# 把输出转换成带<pre>标签的HTML内容
$roboBody = "<pre>$($roboresult -join "`r`n")</pre>"

# 发送HTML邮件(替换成你的实际邮箱和SMTP配置)
Send-MailMessage -To "recipient@yourdomain.com" -From "sender@yourdomain.com" -Subject "Robocopy 执行结果" -Body $roboBody -BodyAsHtml $true -SmtpServer "smtp.yourdomain.com"

关键细节说明

  • 你的$roboresult是Select-Object返回的字符串数组,直接作为邮件Body的话,PowerShell会把数组元素用逗号拼接,所以必须用-join "rn"转换成带换行的完整文本。
  • <pre>标签默认使用等宽字体,完美匹配Robocopy的表格对齐逻辑,主流邮件客户端都会原样渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:11:43