#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 секунд, вернитесь к началу и проверьте еще раз.