我有一个PSCustomObject $result
,其中包含我过滤的数据,目的是创建一个将通过Send-MailMessage
发送的HTML表格。
我可以创建一个看起来很棒的HTML表,但我试图将此表插入到Outlook电子邮件的正文中,这似乎不适用于CSS,因为在Outlook Word中进行渲染(从我读)。如果只是将htm文件附加到电子邮件是我唯一的选择,我会走这条路线,但我的偏好是将表格插入电子邮件正文。
$denied = @()
foreach ($a in $result) {
if ($a.MaintenanceWindow -eq 'Not found!' -or $a.LastReboot -eq 'Access Denied!') {
$denied += $a
}
} #end foreach
$a = @'
"<style>"
"BODY{background-color:lightgrey;}"
"TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
"TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
"TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
"</style>"
'@
$denied | ConvertTo-Html -Head $a | Out-File D:\c.htm;
ii D:\c.htm
答案 0 :(得分:2)
如果您希望将表格作为易于完成的电子邮件正文。
# -Body expects one string. Out-String will take care of that.
$HTMLBody = $denied | ConvertTo-Html -Head $a | Out-String
# To be sure it is rendered as HTML we use the switch -BodyAsHTML
Send-MailMessage -To $toAddresses -From $fromAddresses -Subject "All over this table" -Body $HTMLBody -BodyAsHtml -SmtpServer server
现在该表将成为邮件。
我的$a
存在问题。我删除了所有外部双引号。不是和他们在一起读书。
$a = @'
<style>
BODY{background-color:lightgrey;}
TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}
TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}
</style>
'@
当我们谈论$a
时,你将它用作foreach过程变量和CSS变量。使用有意义的名称,你不会遇到意外覆盖自己的变量的错误。
您正在从现有数组的过滤内容中创建$denied
数组。虽然没有太多的项目是性能需求而且不是必需的。
$denied = $result | Where-Object{
$_.MaintenanceWindow -eq 'Not found!' -or
$_.LastReboot -eq 'Access Denied!'
}