代码来源: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行。