我有一个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中使它看起来像以前一样?
答案 0 :(得分:1)
尝试将新行转换为<br/>
$array=$array -replace '\n','<br/>'
$emailMessage.Body = @"$array "@
评论之后:您可以使用相同的技术(比如创建的时间)以粗体显示:
$array=$array -replace "(Timecreated .*?)(ProviderName)", '<strong>$1</strong>'