我希望能够创建一个表,然后将该表通过电子邮件发送给我自己,但在使其正常工作时遇到了很多麻烦。我相信我的桌子是正确的,但是我需要一个已经做到这一点的人来仔细检查。
$PrintTest = "PASSED"
$InternetTest1 = "PASSED"
$InternetTest2 = "PASSED"
$SkypeServiceStatus = "PASSED"
$SharePointServiceStatus = "PASSED"
$table = New-Object system.Data.DataTable “Daily Morning Health Checks”
$col0 = New-Object system.Data.DataColumn TEST,([string])
$col1 = "Printing"
$col2 = "Google"
$col3 = "MSN"
$col4 = "Skype"
$col5 = "Intranet"
$table.columns.add($col1)
$table.columns.add($col2)
$table.columns.add($col3)
$table.columns.add($col4)
$table.columns.add($col5)
$row0 = $table.NewRow();$row = "TEST and RESULTS";
$row1 = $table.NewRow();$row = $PrintTest;$row = $InternetTest1;$row = $InternetTest2;$row = $SkypeServiceStatus;$row = $SharePointServiceStatus
$table| Format-Table -AutoSize
<#****Test E-Mail****#>
$To = "jsmith@example.com"
$From = "IT@example.com"
$Subject = "Daily Health Check"
$SMTPServer = "MY_Server"
$Body = $Table
$Port = "25"
Send-MailMessage -To $To -Cc $CarbonCopy -From $From -Subject $Subject -SmtpServer $SMTPServer -Body $Body -Port $Port
答案 0 :(得分:1)
这将很难阅读,但是我知道它就像我的手背一样,因为我在查询MS SQL和AD信息后用PS开发了HTML电子邮件。构建逻辑,然后遍历数据以构建注入所有HTML格式的HTML表
我做的所有表都使用ArrayList。要使所有功能正常工作,然后使HTML与Outlook兼容,这很复杂。不过,现在就像魅力一样。
如果您有任何疑问,并且可能正在考虑对表格使用HTML,请告诉我。
编辑:其中一些与您需要的内容无关。仅展示一些逻辑及其实现方法。在不确定公司信息的情况下不确定要包含和排除的内容。
[string]$HTML_Head = "
<head>
<style>
th.h1 {font-size: 20px; background-color: #709faf; font-family: Arial Bold, Arial, sans-serif; font-weight: bold; text-align: center; border: solid; border-width: 1px}
th.h2 {font-size: 15px; font-family: Arial Bold, Arial, sans-serif; font-weight: bold; text-align: center}
th.s1 {font-size: 13px; background-color: #f0f5f7; font-family: Arial Bold, Arial, sans-serif; font-weight: bold; padding: 2px 4px 2px 4px}
td.s1 {vertical-align: top}
td.s2v1 {font-size: 12px; background-color: #a9c5cf; font-family: Arial Bold, Arial, sans-serif; font-weight: bold; text-align: center; padding: 2px 4px 2px 4px}
td.s2v2 {font-size: 12px; background-color: #d9e8ee; font-family: Arial Bold, Arial, sans-serif; font-weight: bold; text-align: center; padding: 2px 4px 2px 4px}
table.s1 {font-size: 12px; background-color: #b7cfd7; border: solid; border-width: 2px}
table.s2 {font-size: 12px; background-color: #709faf; border: solid; border-width: 1px; width: 100%}
</style>
</head>"
[string]$HTML_Body = "
<body>
<table class='s1'>
<tr>
<th class='h1' colspan='3'>Table Name</th>
</tr>
<tr>
<td class='s1'>
$Table_1
</td>
<td class='s1'>
$Table_2
<br>
$Table_3
</td>
<td class='s1'>
$Table_4
</td>
</tr>
</table>
</body>"
Function Create-Table([string]$Input_Title, [string]$Input_Colspan, [System.Collections.ArrayList]$Input_Headers, `
[System.Collections.ArrayList]$Input_Data, [string]$Input_Primary_Condition, [string]$Input_Secondary_Condition, [int]$Input_Logic_1, [string]$Input_Logic_2, `
[string]$Input_Change_Type, [string]$Input_Change_Logic) {
[string]$Table_Colspan = "'" + $Input_Colspan + "'"
[string]$Title = $Input_Title
[string]$Condition_1 = $Input_Primary_Condition
[string]$Condition_2 = $Input_Secondary_Condition
[int]$Logic_1 = $Input_Logic_1
[string]$Logic_2 = $Input_Logic_2
[System.Collections.ArrayList]$Headers = $Input_Headers
[string]$Table_Style_Counter = "1"
[string]$Table_Title = "
<tr class='s1'>
<th class='h2' colspan=$Table_Colspan>$Title</th>
</tr>"
[string]$Table_Header = "`n<tr>" + ($Headers | ForEach-Object {"`n<th class='s1'>$_</th>"}) + "`n</tr>"
If ($Input_Data) {
[string]$Table_Data = $Input_Data | ForEach-Object {
If ($Table_Style_Counter -eq 1) {
$Table_Style_Version = "'s2v1'"
$Table_Style_Counter = 2
}
Else {
$Table_Style_Version = "'s2v2'"
$Table_Style_Counter = 1
}
$ID = $_
"`n<tr class='s1'>"
$Headers | ForEach-Object {
$Line_Data = "`n<td class=$Table_Style_Version>" + $ID.$_ + "</td>"
If ($Input_Change_Type -eq "1") {
If ($_ -eq $Condition_1) {
$Line_Data = $Line_Data -replace "'>", "' style='background-color: #f4a460'>"
}
Elseif ($_ -eq $Condition_2) {
$Line_Data = $Line_Data -replace "'>", "' style='background-color: #ffff99'>"
}
Else {
$Line_Data = $Line_Data
}
If ($_ -eq "Days") {
If (($ID.Days -as [int]) -ge 20) {
$Line_Data -replace "'>", "' style='background-color: #e74c3c'>"
}
ElseIf (($ID.Days -as [int]) -ge 10) {
$Line_Data -replace "'>", "' style='background-color: #f1948a'>"
}
Else {
$Line_Data
}
}
Else {
$Line_Data
}
}
ElseIf ($Input_Change_Type -eq "2") {
If ($_ -eq $Logic_2) {
If ($ID.$_ -gt $Logic_1) {
$Line_Data = $Line_Data -replace "'>", "' style='background-color: #f4a460'>"
}
Else {
$Line_Data = $Line_Data
}
}
Else {
$Line_Data = $Line_Data
}
If ($_ -eq "Change") {
If (($ID.Change -as [int]) -gt 0) {
$Line_Data -replace "'>", "' style='background-color: #f4a460'>"
}
ElseIf (($ID.Change -as [int]) -lt 0) {
$Line_Data -replace "'>", "' style='background-color: #98fb98'>"
}
Else {
$Line_Data
}
}
Else {
$Line_Data
}
}
}
"`n</tr>"
}
}
else {
[string]$Column_Count = "'" + $Headers.Count + "'"
[string]$Table_Data = "<td class='s2v1' style='background-color: #98fb98' colspan=$Column_Count>No Errors</td>"
}
Return "<table class='s2'>
$Table_Title
$Table_Header
$Table_Data
</table>"
}
答案 1 :(得分:0)
这是一个简单得多的方法。但是,我确实感谢上一张海报的活力。
$ HTML1 =“日常健康检查应用程序 状态打印$ PrintTest Internet $ InternetTest1会议PC:$ Server1 $ ServerTest1会议PC:$ Server2 $ ServerTest2会议PC:$ Server3 $ ServerTest3