WedX - журнал о программировании и компьютерных науках

Я написал сценарий PowerShell для отправки оповещения emali, когда служба Windows зависает или останавливается.

Я написал сценарий 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 [email protected] -Subject "$srv is hung on $Computer" -from [email protected] -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 [email protected] -Subject "$srv is stopped on $Computer" -from [email protected] -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.
30.10.2019

  • [1] Вы получаете какие-либо ошибки от командлета Send-MailMessage? [2] работает ли stop/start службы? [3] если вы добавите pause в конце скрипта, увидите ли вы какие-либо сообщения? 30.10.2019
  • Я не получил никакой ошибки от командлета Send-MailMessage? или start/stop службы работают нормально, даже если я добавляю pause ничего не происходит. Когда я запускаю скрипт, я просто получаю следующие строки в окнах вывода, после чего ничего не происходит PS C:\Windows\system32> C:\Users\lingarcr\Desktop\Service Hung.ps1 Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 30.10.2019
  • С помощью приведенного ниже сценария служба запускается, но электронная почта не отправляется, я получаю следующую ошибку. 30.10.2019
  • вам нужно добавить свой ТЕКУЩИЙ код и сообщения об ошибках, которые вы получаете, в исходное сообщение. разбрасывание информации по нескольким комментариям неэффективно. 30.10.2019
  • Приведенный выше код является моим текущим кодом ошибки, о которой я упоминал выше. 30.10.2019
  • гм, э, где сообщение об ошибке, которое вы показываете в своем комментарии 1 час назад? 31.10.2019
  • Привет, Как я могу сделать текст цветным или полужирным, который будет отправлен в качестве темы и тела электронной почты в приведенном выше сценарии. Заранее спасибо. 21.11.2019

Ответы:


1

Зачем делать это, таким образом?

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

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

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

#Email Params
$From = "[email protected]"
        $To = "[email protected]"
        $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

30.10.2019
  • Я получил следующую ошибку, когда запускаю скрипт, который вы предоставили Get-Service : Cannot open Service Control Manager on computer 'RemoteRegistry'. This operation might require other privileges. At C:\Users\lingarcr\Desktop\Untitled4.ps1:13 char:1 + Get-Service -computername $Service | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Service], InvalidOperation Exception + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerS hell.Commands.GetServiceCommand 30.10.2019
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]