Powershell проверяет файл журнала и перезапускает службу, если найден код ошибки

#powershell #loops #logging

Вопрос:

Я довольно новичок в PowerShell и пытаюсь запустить скрипт, который проверяет наличие кода ошибки в последних 5 строках файла журнала. Если скрипт обнаружит ошибку, он должен перезапустить службу, в противном случае он должен вернуться наверх и сделать это снова.

 if(Get-Content C:xxxLog.log -last 5  | Select-String -pattern "Error" -Quiet){
  Restart-Service -Name xxx -Force
}
else
 

Ответ №1:

Пока ваш код верен. Однако этот -last параметр не существует в Get-Content . Попробуй с этим -Tail .

Дополнительная информация: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-7.1

Ответ №2:

Вам нужно будет включить свой код в бесконечный цикл (не рекомендовал бы этого делать).:

 while($true)
{
   if(Get-Content C:abclog.log -Tail 5 | Select-String -Pattern "Error")
   {
      Write-Host "Error found - restarting service..."
      Restart-Service -Name myService -Force
   }
   Start-Sleep 5
}
 

Это прочитает последние 5 строк журнала, если какая-либо из этих строк соответствует предоставленному шаблону, он запишет, что перезапускает службу, затем принудительно перезапустит службу, подождите 5 секунд, вернитесь к началу и проверьте еще раз.