Перезапуск службы Powershell Auto - PullRequest
0 голосов
/ 13 мая 2019

У меня проблема на сервере зонда prtg на одном конкретном сервере.На этом сервере загрузка процессора достигает 90% и требует перезапуска из-за службы prtg.Как я могу автоматически перезапустить службу prtg, когда загрузка процессора достигла 90%?

Я думал о создании сценария с условием, но не смог его выполнить.

-Set-Service [service name] -startuptype automatic

1 Ответ

0 голосов
/ 13 мая 2019

Если вы используете PowerShell 5.x, вы можете использовать Get-Counter для загрузки процессора. Попробуйте проверить на сервере следующее:

$peridiocallyChecks = {
   # Check if logging source is available, if not add it
   if (!(Get-EventLog -Source "CPU supervision" -LogNameApplication)){
       New-EventLog -LogName Application -Source "CPU supervision"
   }

   $cpuUsage = [double] (Get-Counter '\Processor(_Total)\% Processor Time' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue)

   if ($cpuUsage -gt 90) {
       Write-EventLog -LogName "Application" -Source "CPU supervision" -EntryType Information -EventId 1 -Message "CPU usage is $cpuUsage. Going to stop service"
       Stop-Service "yourServiceName"
       # Some cooldown time for the service to shutdown
       Start-Sleep -Seconds 10
       Start-Service "yourServiceName"
       Write-EventLog -LogName "Application" -Source "CPU supervision" -EntryType Information -EventId 1 -Message "Restarted service"
   }
}

# Trigger every hour
$trigger = New-JobTrigger -Once -At "9/21/2012 0am" -RepetitionInterval (New-TimeSpan -Hour 12) -RepetitionDuration ([TimeSpan]::MaxValue)

Register-ScheduledJob -Name "CPUCheck" -Trigger $trigger -Scriptblock $peridiocallyChecks

Проверьте следующие ссылки относительно рабочих мест:

Надеюсь, что поможет

...