Я написал сценарий PowerShell для отправки электронного уведомления, когда служба Windows зависает или останавливается - PullRequest
0 голосов
/ 30 октября 2019

Я написал сценарий PowerShell, который отправляет оповещение по электронной почте, когда состояние службы зависло или остановлено, но когда я запускаю сценарий в PowerShell в режиме администратора, сценарий по-прежнему показывает, что он работает, но не выдает никакой ошибки или вывода, пожалуйстапомогите мне решить эту проблему.

Я пытался в ОС Windows 10, но не получил ответ от файла сценария.

#AUTHOR: Kevin Olson 
#DATE: 4/29/2011 

#Machine to be monitored 
$Computer = "IN-LINGARCR-1" 

#Create an array of all services running 
$GetService = get-service -ComputerName $Computer 

#Create a subset of the previous array for services you want to monitor 
$ServiceArray = "RemoteRegistry"

#Find any iWFM service that is stopped 
foreach ($Service in $GetService) 
{ 
 foreach ($srv in $ServiceArray) 
 { 
     if ($Service.name -eq $srv) 
     { 
         #check if a service is hung 
         if ($Service.status -eq "StopPending") 
         { 
         #email to notify if a service is down 
         Send-Mailmessage -to lckreddy456@gmail.com -Subject "$srv is hung on $Computer" -from lckreddy456@gmail.com -Body "The $srv service was found hung" -SmtpServer smtp.gmail.com 
         $servicePID = (gwmi win32_Service | where { $_.Name -eq $srv}).ProcessID 
         Stop-Process $ServicePID 
         Start-Service -InputObject (get-Service -ComputerName $Computer -Name $srv) 
         } 
         # check if a service is stopped '
         elseif ($Service.status -eq "Stopped") 
         { 
         #email to notify if a service is dow
         Send-Mailmessage -to lckreddy456@gmail.com -Subject "$srv is stopped on $Computer" -from lckreddy456@gmail.com -Body "The $srv service was found stopped" -SmtpServer smtp.gmail.com 
         #automatically restart the service. 
         Start-Service -InputObject (get-Service -ComputerName $Computer -Name $srv) 
         } 
     } 
 } 
}```

Powershell script needs to send an email alert when the service stops or hangs.

Thanks in Advance.

1 Ответ

0 голосов
/ 30 октября 2019

Почему это так?

Почему бы просто не использовать GPP для мониторинга сервисов, позволить настройкам GPP воздействовать на сервисы и отправлять вам оповещения через скрипт. Просто любопытно и идея для рассмотрения.

Попробуйте что-то вроде этого ...

#Services to Monitor
$ServiceToMon = 'MSSQLSERVER' #define service name here
$voicesrv="voiceserv" #define voice server here

#Email Params
$From = "alert@alert.com"
        $To = "support@domain.com"
        $SMTPServer = "smtp"
        $Body = "Start the Servicve if Found stopped $status "
        $Subject = " Service Status for  $($env:computername) "

#Start services that are stopped
Get-Service -computername $voicesrv $ServiceToMon  | 
where {$_.Status -eq 'Stopped'}  | 
Start-Service $ServiceToMon
timeout /t 10

$status = get-service $ServiceToMon
send-mailmessage -from $from -to $to -subject $Subject -smtpserver $SMTPServer -body $Body

Или один из готовых примеров:

Отправить письмоСообщение с состоянием службы через PowerShell

https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/19/send-an-email-message-with-service-status-via-powershel

PowerShell - монитор группы услуг на N серверах и уведомление об остановленных службах

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Monitor-Notify-a5fe1538

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...