1.1 實(shí)時(shí)監控腳本
$serverlist = "c:\serverlist.txt" #導入服務(wù)器列表 foreach ($server in Get-Content $serverlist) { $services=Get-service -ComputerName $server -name *exchange* #獲取服務(wù) foreach($service in $services) { if(($service.status -ne "running") -and ($service.name -ne "vmickvpexchange")) #判斷非Running狀態(tài)的服務(wù),排除不必要啟動(dòng)的服務(wù) { start-service $service.name #啟動(dòng)非Running狀態(tài)的服務(wù) sleep 10 #暫停10s,待服務(wù)完全啟動(dòng) $result=Get-service $service.name #獲取重啟后的服務(wù)狀態(tài) c:\Sendemail.ps1 -displayname $service.displayname -name $service.name -status $result.status #啟動(dòng)告警郵件發(fā)送腳本 } } }
|
1.2 郵件通知腳本
param($server,$displayname,$name,$status) $smtpServer = "12EX.contoso.com" #定義SMTP服務(wù)器地址 $smtpUser = "administrator@contoso.com" #定義發(fā)件人賬戶(hù)ì $smtpPassword = "2wsx#EDC" #定義發(fā)件人密碼 $mail = New-Object System.Net.Mail.MailMessage $MailAddress="ExServicesMonitor@contoso.com" #定義虛擬發(fā)件人郵箱地址 $MailtoAddress="carbon2@contoso.com" #定義收件人郵箱地址 $mail.From = New-Object System.Net.Mail.MailAddress($MailAddress) $mail.To.Add($MailtoAddress) $mail.Subject = "警報"+" $server exchange服務(wù)異常: "+$displayname+", 服務(wù)名: "+$name+", 重啟后狀態(tài): "+$status+", 發(fā)生時(shí)間: "+ $(Get-Date) #定義郵件標題 $mail.Priority = "High" #定義郵件優(yōu)先級 $mail.Body = "" #定義郵件正文 $smtp = New-Object System.Net.Mail.SmtpClient -argumentList $smtpServer $smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser,$smtpPassword $smtp.Send($mail) |
2.1 任務(wù)計劃程序
通過(guò)如下配置實(shí)現監控腳本的每隔5分鐘運行一次:



2.2 腳本循環(huán)執行
在原有腳本的基礎上添加循環(huán)執行語(yǔ)句,并設置執行間隔時(shí)間為5分鐘
write-host "不要關(guān)閉此窗口,如關(guān)閉請到C盤(pán)MONITOR 用POWERSHELL重新運行ExServicesMonitor腳本" + $(Get-date) while($true){ $serverlist = "c:\serverlist.txt" #導入服務(wù)器列表 foreach ($server in Get-Content $serverlist) { $services=Get-service -ComputerName $server -name *exchange* #獲取服務(wù) foreach($service in $services) { if(($service.status -ne "running") -and ($service.name -ne "vmickvpexchange")) #判斷非Running狀態(tài)的服務(wù),排除不必要啟動(dòng)的服務(wù) { start-service $service.name #啟動(dòng)非Running狀態(tài)的服務(wù) sleep 10 #暫停10s,待服務(wù)完全啟動(dòng) $result=Get-service $service.name #獲取重啟后的服務(wù)狀態(tài) c:\Sendemail.ps1 -displayname $service.displayname -name $service.name -status $result.status #啟動(dòng)告警郵件發(fā)送腳本 } } } sleep 300 } |
聯(lián)系客服