- SPSAdminV4
- SPTimerV4
- SPSearchController
為了避免這樣手誤,寫一隻powershell每分鐘來觀察服務被停止的時候,是否「設定精靈」在執行中。
如果設定精靈結束,但服務又沒被帶起來,PowerShell會自動啟動服務
以下為Script內容:
## 欲監控之SPS服務列表 $Service_List= "SPAdminV4","SPTimerV4","SPSearchHostController" ## SPS 設定精靈Process名稱 $SPSCFGWIZ = "psconfigui" ## 指定Mail寄送之SMTP主機 $SMTPServer = "relay.foo.com.tw" ## 指定Mail收件者 $MailTo = "Server Admin<itsa@foo.com.tw>" ##### 檢查程序 ##### ## 取得Service狀態 $TargetService = Get-Service |Where-Object Name -in $Service_List $Process_Check = Get-Process |Where-Object ProcessName -like ${SPSCFGWIZ}* ## 符合條件之後續處理 ForEach ($SVC in $TargetService) { IF ($SVC.Status -eq "Stopped" -and -Not $Process_Check) { $Begin_Time = Get-Date Start-Service $SVC.Name $End_Time = Get-Date $MailFrom = "Watch Dog <" + $env:USERNAME + "@" + ([system.net.dns]::GetHostByName('').HostName) + ">" $MailSubject = "檢測通知:" + $SVC.DisplayName + "服務已重新啟動" $MailBody = "Hi," + " `r`n`t" + "主機:" + $env:computername + " 的 " + $SVC.DisplayName + " 服務於 " + $Begin_Time.ToString("yyyy/MM/dd HH:MM:ss") + " 重新啟動,耗時:" + ($End_Time - $Begin_Time).TotalSeconds + "秒" + "`r`n" + "`t" + "原因:服務狀態為Stopped." + " `r`n`r`n" + "`t" + "Your Watch Dog" ## 寄送郵件 Send-MailMessage -to $MailTo -From $MailFrom -Subject $MailSubject -Body $MailBody -SmtpServer $SMTPServer -Encoding UTF8 -Priority High } }