아래 스크립트는 데이터베이스 백업 정보를 테두리가있는 멋지게 서식이 지정된 테이블에 넣고 .htm으로 저장합니다. 그런 다음 보고서를 전자 메일로 보냅니다. 그러나 보고서에 전자 메일을 보내면 '테이블'에 테두리가없고 'LastBackupDate'열과 'LastLogBackupDate'열 사이에 간격이 없습니다. 기본적으로 PowerShell 콘솔에서 결과와 동일하게 보입니다. 누구든지 파일 형식으로 모든 HTML이 사용되도록 전자 메일의 형식을 지정하는 방법을 알려 줄 수 있습니까? 추신. gmail ssl의 문제로 인해 send-mailmessage를 사용할 수 없습니다. 감사. 얻을 컨텐츠,Powershell HTML 전자 메일 형식
$Body = [System.IO.File]::ReadAllText("D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm")
Net.Mail.MailMessage
의 body
속성이 [string]
을 받아 반환 [string[]]
을 :
#HTML
$a = "<style>"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 10px;border-style: solid;border-color: black;}"
$a = $a + "TD{border-width: 1px;padding: 10px;border-style: solid;border-color: black;}"
$a = $a + "</style>"
#Set Date
$date = (get-date).ToString('yyyyMMdd')
#Locate DB
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "LOCALHOST\SQLX64"
#Retrieves the last backup dates - for full and log backups
$dbs=$s.Databases
$backups = $dbs | SELECT Name,LastBackupDate, LastLogBackupDate | Sort-Object LastBackupDate | ConvertTo-HTML -head $a -body "<H2>DB01 Database Backup Details $date </H2>" | Out-File $("D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm")
#Email Report
$EmailFrom = "[email protected]"
$emailto = "[email protected]"
$Subject = "Database Backup Log $date"
$Body = Get-Content D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "password here");
$message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)
$message.IsBodyHtml = $true;
$SMTPClient.Send($message)
#Rename file to include today's date
Rename-Item -path D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm -newname ($date +"_DB01_Backup_Log.htm")
제쳐두고, "$ a = $ a +"반복을 PowerShell의 'here strings'로 바꾸는 것을 고려하십시오. 그것은 당신의 삶을 좀 더 쉽게 만들어 줄 것입니다. http://technet.microsoft.com/en-us/library/ee692792.aspx – xcud
+1 @xcud. 샬롯, 파일을 보내기 전에 브라우저에서 파일이 정상적으로 보입니까? –
Shay, 예 .htm 파일이 좋아 보인다. – Charlotte