PowerShell不正确的结果

所以我有下面的脚本,基本上从robocopy任务中导入日志文件,然后通过电子邮件发送给我最后14行(基本上是最后的统计数据)。 不过,我似乎无法得到正确的格式。 这是脚本:

$logfile_offsite = "C:\offsitebackup.log" $log_contents = Get-Content $logfile_offsite $date = Get-Date -Format g $footer = get-content $logfile_offsite | select-object -Last 14 #Send email $smtp_server = "smtp.server.com" $address_to = "[email protected]" $address_from = "[email protected]" Send-MailMessage -SmtpServer $smtp_server -To $address_to -From $address_from -Subject " Offsite Backup $date " -Body " $footer " 

所以当电子邮件通过原来格式化,看起来整洁搞砸了。 有没有什么办法解决这一问题?

如果没有大量关于您的邮件客户端的详细信息,您会收到电子邮件和传送您的电子邮件的服务器(任何可能发生的卫生问题),我会提出两点build议:

  • 检查您的邮件客户端是否使用固定宽度的字体 。 您的控制台输出可能使用固定宽度的字体,而您的邮件客户端可能不会,即使是像这样的纯文本电子邮件。 从这个angular度来看,假设你的日志文件包含你期待的格式的文本,那么你的邮件客户端也应该如此。

  • Send-MailMessage的帮助指南build议-Body参数需要一个String对象。 告诉Get-ContentSelect-Object返回Get-Content并不总是那么容易,但在你的情况下,你最终会得到一个数组(集合),因为这就是你如何处理你的input。 那么CMDlet如何从你的string数组中创build一个string呢? 也许它只是没有空间就join他们。 试试这一行,它将用一个回车符和一个换行符来连接string数组。 这样你就可以告诉PowerShell你想要做什么:

    $footer = (get-content $logfile_offsite | select-object -Last 14) -join "`r`n"