我有这个PowerShell脚本来获取SQL失败的作业状态,当我运行它时,我可以看到它正在获取信息但无法绑定并将输出写入定义的HTML格式。
尝试在我的能力下玩它,但我无法弄清楚哪里出错了。任何帮助将不胜感激。
function writeHtmlHeader {
Param($fileName)
$date = ( Get-Date ).ToString('yyyy/MM/dd')
Add-Content $fileName "<html>"
Add-Content $fileName "<head>"
Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1?>"
Add-Content $fileName '<title>SQL Job Failure Report </title>'
Add-Content $fileName '<STYLE TYPE="text/css">'
Add-Content $fileName "<!-"
Add-Content $fileName "td {"
Add-Content $fileName "font-family: Tahoma;"
Add-Content $fileName "font-size: 11px;"
Add-Content $fileName "border-top: 1px solid #999999;"
Add-Content $fileName "border-right: 1px solid #999999;"
Add-Content $fileName "border-bottom: 1px solid #999999;"
Add-Content $fileName "border-left: 1px solid #999999;"
Add-Content $fileName "padding-top: 0px;"
Add-Content $fileName "padding-right: 0px;"
Add-Content $fileName "padding-bottom: 0px;"
Add-Content $fileName "padding-left: 0px;"
Add-Content $fileName "}"
Add-Content $fileName "body {"
Add-Content $fileName "margin-left: 5px;"
Add-Content $fileName "margin-top: 5px;"
Add-Content $fileName "margin-right: 0px;"
Add-Content $fileName "margin-bottom: 10px;"
Add-Content $fileName ""
Add-Content $fileName "table {"
Add-Content $fileName "border: thin solid #000000;"
Add-Content $fileName "}"
Add-Content $fileName "->"
Add-Content $fileName "</style>"
Add-Content $fileName "</head>"
Add-Content $fileName "<body>"
Add-Content $fileName "<table width='100%'>"
Add-Content $fileName "<tr bgcolor='#CCCCCC'>"
Add-Content $fileName "<td colspan='4? height='25' align='center'>"
Add-Content $fileName "<font face='tahoma' color='#003399? size='4?><strong>SQL Job Status - $date</strong></font>"
Add-Content $fileName "</td>"
Add-Content $fileName "</tr>"
Add-Content $fileName "</table>"
}
function writeTableHeader {
Param($fileName)
Add-Content $fileName "<tr bgcolor=#CCCCCC>"
Add-Content $fileName "<td width='10%' align='LEFT'>ServerName</td>"
Add-Content $fileName "<td width='50%' align='left'>JobName</td>"
Add-Content $fileName "<td width='10%' align='left'>JobLastRun Outcome</td>"
Add-Content $fileName "<td width='10%' align='left'>JobLastRunStatus</td>"
Add-Content $fileName "</tr>"
}
function writeHtmlFooter {
Param($fileName)
Add-Content $fileName "</body>"
Add-Content $fileName "</html>"
}
function writeInfo {
Param($filename,$Servername,$name,$outcome,$Status)
Add-Content $fileName "<tr>"
Add-Content $fileName "<td align=left ><b>$servername</td>"
Add-Content $fileName "<td align=left ><b>$name</td>"
Add-Content $fileName "<td align=left ><b>$Outcome</td>"
Add-Content $fileName "<td align=left ><b>$Status</td>"
Add-Content $fileName "</tr>"
}
writeHtmlHeader $FailedJobFileName
Add-Content $FailedJobFileName "<table width='100%'><tbody>"
Add-Content $FailedJobFileName "<tr bgcolor='#CCCCCC'>"
Add-Content $FailedJobFileName "<td width='100%' align='center' colSpan=4><font face='tahoma' color='#003399? size='2?><strong> SQL Job Details</strong></font></td>"
Add-Content $FailedJobFileName "</tr>"
writeTableHeader $FailedJobFileName
foreach ($sqlserver in $sqlservers) {
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $sqlserver;
foreach ($job in $srv.Jobserver.Jobs) {
$jobName = $job.Name;
$jobEnabled = $job.IsEnabled;
$jobLastRunOutcome = $job.LastRunOutcome;
$jobLastRun = $job.LastRunDate;
if ($jobEnabled = "true" -and $jobLastRun) {
$datediff = New-TimeSpan $jobLastRun $today
$days = $datediff.days
if ($days -lt 1 ) {
if ($jobLastRunOutcome -eq "Failed") {
Write-Host $sqlserver $jobName $jobLastRunOutcome $JobLastRun
writeInfo $ServiceFileName $sqlserver $jobName $jobLastRunOutcome $JobLastRun
}
}
}
}
}