脚本解析结果到同一封电子邮件

脚本解析结果到同一封电子邮件

我正在将 powershell 脚本的结果输出到 html 文件中,该文件通过 exchange 通过电子邮件发送给我,我需要让脚本停止将结果解析到同一封电子邮件,并在每次运行时创建一封新电子邮件。我尝试了不同的主题行,但它仍然会解析到相同的电子邮件地址。

$Subject = "Win7 Printer Report from script"

$ToAddress = "[email protected]"

$FromAddress = "[email protected]"

send-mailmessage -to $ToAddress -from $FromAddress -subject $Subject -smtpserver vmserver.server.com -body $body -BodyAsHtml 

这是完整的脚本。

 Import-Module ActiveDirectory



$comps = "12345"







foreach ($comp in $comps)

{

                $count++

                $printers = get-printer -computername $comp

                foreach ($printer in $printers)

                {

                                $p_name = $printer.name

                                $p_shared = $printer.shared

                                $p_published = $printer.published

                                $p_sharename = $printer.sharename

                                $p_drivername = $printer.drivername



                                $drivStr = $null



                                $drivers = get-printerdriver $p_drivername -computername $comp

                                foreach ($driver in $drivers)

                                {

                                                $d_environment = $driver.PrinterEnvironment


                                                $drivStr += "$d_environment | "

                                }             

                                $t_file_content += "<tr class=greyback><td>$comp</td><td>$p_name</td><td>$p_shared</td><td>$p_published</td><td>$p_sharename</td><td>$p_drivername</td><td>$drivStr</td></tr>"

                }

}

$t_file_header = "<div class=ibmtitle>Win7 Printer Report</div><table><tr class=blueback><td>Computer</td><td>Name</td><td>Shared</td><td>Published</td><td>Share Name</td><td>Driver Name</td><td>Driver Type</td></tr>"

$t_file_footer = "</table><br>"

$t_file = $t_file_header + $t_file_content + $t_file_footer

$endDTM = (Get-Date)

$ts = ($endDTM-$startDTM)

$ts_display = '{0:00}h {1:00}m {2:00}s' -f $ts.Hours,$ts.Minutes,$ts.Seconds

$ScriptPath = $MyInvocation.MyCommand.Path

$host_name = $env:COMPUTERNAME

$infobox = "<br><table style='width:100%'><tr class=greyback><td><b>Script:</b> $ScriptPath<br>"

$infobox = $infobox + "<b>Server:</b> $host_name<br>"

$infobox = $infobox + "<b>Script run time:</b> $ts_display<br>"

$infobox = $infobox + "<br>"

$infobox = $infobox + "<b>Description:</b> Checks printers on selected servers.<br>"

$infobox = $infobox + "<br>"

$infobox = $infobox + "<b>Computers:</b> $count<br>"

$infobox = $infobox + "<br>"

$infobox = $infobox + "</td></tr></table>"

$html_header = "<html><head>" + $a + "</head><body>"

$body_main = $body_main + $t_file + $infobox

$html_footer = "</body></html>"

$body = $html_header + $body_main + $html_footer

$Subject = "Win7 Printer Report"

$ToAddress = "[email protected]"

$FromAddress = "[email protected]""

send-mailmessage -to $ToAddress -from $FromAddress -subject $Subject -smtpserver vm.lol.com -body $body -BodyAsHtml

答案1

您说您正在邮寄一个“文件”,并且在您发布的代码中有一些名为“文件”的变量。但该代码中没有与文件相关的活动。您还将 $comps 作为字符串,而它应该是一个数组。感觉这段代码在发布之前已被修改。有时需要发布缩写代码,但这样做时需要小心谨慎。

如果您确实在邮寄文件,并且每天都将文件附加到同一个文件,则可能会导致您描述的问题。如果是这种情况,请确保每天都删除该文件,或者每天写入一个新文件,并使用 YearMonthDay 或其他名称命名。

如果我弄错了并且确实没有文件,请尝试$t_file_content = $null在脚本顶部添加。

编辑1
尝试$body_main = $null在脚本顶部添加。

相关内容