如何在Powershell变量输出中保留文本格式?

时间:2019-04-09 11:13:50

标签: windows powershell robocopy

我正在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

如何使我收到格式化的电子邮件?

在此先感谢您提供任何帮助。干杯!

1 个答案:

答案 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")