在HTML正文中发送确切的Powershell输出

时间:2015-03-19 12:30:59

标签: html powershell html-email

我有一个powershell脚本,可以发送包含一些Windows事件的电子邮件。

$ array包含事件

$array = (Get-WinEvent -FilterXml ([xml](Get-Content C:\SendMail\EventBackup.xml))| Format-List) | out-string

然后在电子邮件正文中,我曾经输入$Body=$array,我的报告就像:

TimeCreated  : 3/16/2015 2:12:52 AM
ProviderName : Microsoft-Windows-Backup
Id           : 14
Message      : Backup completed.

TimeCreated  : 3/16/2015 2:12:52 AM
ProviderName : Microsoft-Windows-Backup
Id           : 4
Message      : Backup finished successfully.

TimeCreated  : 3/16/2015 1:00:14 AM
ProviderName : Microsoft-Windows-Backup
Id           : 1
Message      : Backup started.

我已将电子邮件类型更改为HTML,因此我可以自定义报告,但现在正文如下:

TimeCreated : 3/19/2015 2:23:00 AM ProviderName : Microsoft-Windows-Backup Id : 14 Message : Backup completed. TimeCreated : 3/19/2015 2:23:00 AM ProviderName : Microsoft-Windows-Backup Id : 4 Message : Backup finished successfully. TimeCreated : 3/19/2015 1:00:13 AM ProviderName : Microsoft-Windows-Backup Id : 1 Message : Backup started.

全部在同一行。

我知道这可能是因为这句话:

$emailMessage.IsBodyHtml = $true
$emailMessage.Body = @"$array "@

如何在HTML中使它看起来像以前一样?

1 个答案:

答案 0 :(得分:1)

尝试将新行转换为<br/>

$array=$array -replace '\n','<br/>' 
$emailMessage.Body = @"$array "@

评论之后:您可以使用相同的技术(比如创建的时间)以粗体显示:

$array=$array -replace "(Timecreated .*?)(ProviderName)", '<strong>$1</strong>'