我正在将 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
在脚本顶部添加。