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

Send exact Powershell Output in HTML body

我有一个 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 之前的样子?

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

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

发表评论后:您可以使用相同的技术以粗体显示创建时间:

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