HTML行样式在电子邮件中不正确,但不是Out-File

时间:2017-03-17 13:39:31

标签: powershell

代码来源:https://jamesdatatechq.wordpress.com/2014/12/23/how-to-create-an-html-table-from-powershell/

下午好,

使用上面的教程,我创建了以下脚本来测试各种服务器的连接:

$Style = "
<style>
    BODY{background-color:#b0c4de;}
    TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
    TH{border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:#778899}
    TD{border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
    tr:nth-child(odd) { background-color:#d3d3d3;} 
    tr:nth-child(even) { background-color:white;}    
</style>
"
#Cell Color - Logic
$StatusColor = @{False = ' bgcolor="Red">Offline<';True = ' bgcolor="Green">Online<';}

#Check Online
$subject = "Online Test at " + (Get-Date -Format g)
$body = (import-csv "C:\AutoTasks\servers.txt" | % {new-object psobject -property @{ComputerName=$_.Computer;Description=$_.Description; Reachable=(test-connection -computername $_.Computer -quiet -count 1)} }  | ConvertTo-HTML -AS Table -Fragment -PreContent '<h2>Online Status</h2>'|Out-String) 

#Cell Color - Find\Replace
$StatusColor.Keys | foreach { $body = $body -replace ">$_<",($StatusColor.$_) }

$main = ConvertTo-HTML -head $Style -PostContent $body | Out-String
Send-MailMessage -From "xxxxxxxxxx" -To "xxxxxxxxxxx" -Subject $subject -Body $main -BodyAsHtml -SmtpServer "xxxxxx"

如果我运行这个,我收到电子邮件,我得到ping测试,我得到表格,绿色/红色条件格式。我没有得到的是行颜色格式,它包含在以下几行中:

tr:nth-child(odd) { background-color:#d3d3d3;} 
tr:nth-child(even) { background-color:white;}  

现在,如果我注释掉底部的2行并添加以下行,输出到文件而不是邮件,我会显示所有格式并且正确:

ConvertTo-HTML -head $Style -PostContent $body | Out-File c:\temp\online.html

是否有理由在创建电子邮件期间丢失行格式?

修改

其他

在电子邮件输出中,我注意到邮件左上角有一个小方框,我怀疑这是所有格式化的地方。这不在html out-file上,所以我怀疑问题出在底线2行。

0 个答案:

没有答案