Task Schduler for real-time mail notify

Task Schduler for real-time mail notify

Biztalk-Error-EventLog

之前在Biztalk上的應用程式出錯的機會不大,可能也只有上線初期抓幾隻小蟲,而且內部應用程式本身也都有例外通知機制,一直運作的不錯。但最近上線的一支Biztalk應用程式,接收到的來源端B2B資訊不符合原先的需求規格,也就是說,一開始就被Biztalk擋下,根本就還沒進到應用程式之內,造成此筆錯誤的B2B資訊沒有被處理到,也因為沒進到應用程式之內,根本就不會觸發應用程式內的錯誤通知功能。也就是說,我們根本就不知有此錯誤,造成處理上的時差。

Task Schduler for Real-Time notify

原先我是自己寫PowerShell去抓Event Log的內容來分析,如果發現有Biztalk發出Error層級的Event Log就送出通知。不過,這種工作排程最大的問題在於不即時,當碰到即時需求時,它就有點不夠力。總不可能設定60個排程,每個1分鐘掃一次Event Log來當即時通知作業吧!

但真的是這樣嗎?原來人家Task Schduler是有即時功能的。是我自己學藝不精。讓我們新增一個Task,重點在Trigger身上:

task-scheduler-trigger-on-an-event

在【Begin the task】選擇【On an event】選擇【Custom】點擊【New Event Filter...】

task-scheduler-trigger-new-event-filter

依照我們需求去選擇你想要的條件,這裡我們選擇Event level:Error;Source: Biztalk ServerBiztalk Server EDIXLANG/s。按OK、OK的結束Trigger的設定。接下來換Action設定。

task-scheduler-action-send-mail

可以看到圖片裡有個「Send an e-mail (deprecated)」,原本以為只是個過期功能,反正都還在清單上,也能打開做設定,我也只是要個通知說有錯誤即可。結果呢?什麼都設定好了,按OK不能儲存。說是過期了,不能使用。(心裡有隻姓草的馬在跑!)

本以為一行程式碼都不同寫,能用設定來解決需求,結果你把Windows 8就過時的功能,UI選項放到了Windows 2019還不移除,看得到吃不到,真傷心。最後只好走Start a program回頭路。

PowerShell - Mail function

最後附上一段過期但能正常寄送通知信的PowerShell:

$to = @("Bruce's Mail", "Gina' Mail", "Danny' Mail")
$from = "your from mail"
$subject = "your subject"
$body = "your body"
$smtp = "your smtp server"
Send-MailMessage -To $to -from $from -Subject $subject -Body $body  -SmtpServer $smtp

Send-MailMessage 如果在PowerShell視窗中執行時會顯示此指令已經過期的資訊。但到目前為止,不影響功能。

如此之後,你就能得到一個即時的Event Log通知功能。也就是說,你能指定各種條件,只要系統層級的Event Log條符合件,你就能第一時間收到錯誤通知。雖然最後寫了一小段PowerShell,但能得到即時性通知功能相比,太值得了。相見恨晚。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。