Перезапуск службы Powershell Auto

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

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

-Set-Service [service name] -startuptype automatic

Всего 1 ответ


Если вы используете 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

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

надеюсь, это поможет


Есть идеи?

10000