我正在PS脚本上使用以下代码捕获Robocopy输出的一部分并通过电子邮件发送,但它不保持输出格式。
$roboresult = (Get-Content $tmpdest\$RoboLog | Select-Object -first 15)
$roboresult += (Get-Content $tmpdest\$RoboLog | Select-Object -last 10)
$roboresult
它以如下形式显示在电子邮件中(未格式化);
-------------------------------------------------- -------------------------------- ROBOCOPY :: Windows强大的文件复制功能
-------------------------------------------------- -----------------------------开始时间:2019年4月9日星期二09:27:17来源:I:\〜temp \ SIGNO \
目的地:\ BRC \ H $ \〜temp \ SIGNO \文件:。选项:。 / X / NDL / NFL / S / E / COPY:DAT / MOVE / Z / NP / MT:8 / R:10 / W:5
-------------------------------------------------- ---------------------------- ---------------------- -------------------------------------------------- ------复制的跳过的不匹配项总数失败,额外费用为:
1235 1235 0 0 0 0文件:
147408 147408 0 0 0 0字节: 79.215 g 79.215 g 0 0 0 0时间:27:56:05 2:47:50 0:00:00 0:21:21已结束: 2019年4月9日星期二12:36:29
如何使我收到格式化的电子邮件?
在此先感谢您提供任何帮助。干杯!
答案 0 :(得分:0)
我认为这与您构造邮件命令的方式是可能的。如果我在这里遇到了同样的情况,我将得到一个$roboresult
变量,其中包含25行格式化的代码。如果要将其作为电子邮件正文发送,则需要将其转换为字符串以使用send-mailmessage
。如果您用 CRLF 字符加入每一行,则应保留电子邮件格式。
send-mailmessage -from recipient@domain.com -to you@domain.com -subject "Robocopy Results" -body ($roboresult -join "`r`n") -smtpserver servername
根据您的评论,您应该可以将$roboresult
替换为以下内容:
$($roboresult -join "`r`n")