Share Point 2013會因為在本機執行「SharePoint設定精靈」,依照服務的機制,設定精靈會讓部分服務停止,等待設定完畢之後再重新啟動服務,這些會被停止的服務包括:
- SPSAdminV4
- SPTimerV4
- SPSearchController
有時候系統管理者只是不慎點到「SharePoint設定精靈」,因此會按下「取消」按鈕來關閉設定精靈,但是停止的服務便不會再度啟動
為了避免這樣手誤,寫一隻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
}
}