windows 伺服器管理員應該都會知道windows中不管發生了甚麼問題在事件檢視器中都會記上一筆紀錄,但是不一定每一筆都會是管理員會想知道,但是或許當伺服器中突然出現某一個事件紀錄時意味著伺服器可能出現了某些問題,但是該問題嚴重性或許可大、可小,但是如果在發生的同時可以第一時間通知管理員來檢查或許就可以降低長時間中斷服務的機會,因為如果在使用者通管理員其實服務已經出了問題,然後管理員再去查看堆集成山的事件就會比較浪費一些時間,雖然有其他網管軟體可以達到但是有可能會費用支出的問題,當然也可以利用免費的工具但是往往還是需要調整研究如何使用。
所以比較簡單的方式就是設定事件檢視器對特定的事件觸發管理動作來發送郵件通知管理員,這個功能在windows vista 後的版本就已經提供,但是在win8 以後包含win2012/R2,針對特定事件發送郵件功能卻無法使用(如下圖)。
雖然可以選擇[傳送電子郵件]選項,但是在最後設定完畢後卻會出現如下圖訊息而無法使用。
所以如果要使用該功能就只能選用[啟動程式]選項,那要如何發送郵件呢?可以搭配使用powershell 來達成。
程式碼如下:
=========================================================================
function sendMail{
Write-Host “Sending Email”
#SMTP server name
$smtpServer = “smtp ip “
#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = “sysadmin@pmail.idv.tw”
$msg.ReplyTo = “test@pmail.idv.tw”
$msg.To.Add(“roy.lee@pmail.idv.tw”)
$msg.subject = “alear evenid 7036”
$msg.body = “alear evenid 7036”
#Sending email
$smtp.Send($msg)
}
#Calling function
sendMail
====================================================================
說明:
$smtpServer = “smtp ip ” => smtp 位址,可以用IP 或是fqdn都可以
$msg.From = “sysadmin@pmail.idv.tw” =>寄件者e-amil
$msg.ReplyTo = “test@pmail.idv.tw” => 回復的收件人
$msg.To.Add(“roy.lee@pmail.idv.tw“) => 收件人
$msg.subject = “alear evenid XXXX” => 主旨
$msg.body = “alear evenid 7036” => 內容
將上述藍色粗體字部分貼在記事本後修改相關設定後另存成ps1附檔名。
測試:
當系統出現 7034 事件時發送mail 給管理員
開起事件檢器後,找到7034的錯誤事件,在該事件點選滑鼠右鍵>選擇[附加工作到此事件]
接著可以自訂此工作名稱
接著會直接帶出系統檔,事件識別碼等資訊,直接點選下一步
動作選項,因此次示範的主機是windows server 2012 R2 所以只能選擇[啟動程式]
程式或指令碼欄位輸入 : powershell
新增引數欄位輸入 : -File c:\sendmail.ps1 (該powershell 程式的位置)
最後點選完成
當事件發生時powershell script 中所設定的管理員mail 就會收到通知信
本篇瀏覽人數: 9610
您好~請教一下~有沒有辦法針對所有的警告訊息而寄出MAIL,而不是針對單一事件,
另外再請教一下,是不是只能跟對已發生的錯誤警告訊息做郵件通知,有沒有辦法針對未發生的警告訊息做郵件通知,例如Server backup排程備份錯誤…3q
您好
這個是針對事件檢視器中已經產生的事件發送e-amil,如果您提到的未發生的警告訊息若您知道事件ID等訊息應該也是可以設定的,設定後或許當它產生時就可以發送警告郵件了
您好 :
請問是否能複製事件的內文並發送mail給管理者
您好
這個我就沒有研究了
您好
找了一些資料 如下網址給您參考
https://devblogs.microsoft.com/scripting/filtering-event-log-events-with-powershell/
已解決,可複製事件內容發信
謝謝