Powershell检查日志文件并在发现错误代码时重新启动服务

ltskdhd1  于 2023-04-06  发布在  Shell
关注(0)|答案(2)|浏览(97)

我是PowerShell的新手,我正在尝试运行一个脚本,该脚本检查日志文件的最后5行中的错误代码。如果脚本发现错误,它应该重新启动服务,否则它应该循环回到顶部并再次执行。

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

toiithl61#

到目前为止,您的代码是正确的。但是,-last参数在Get-Content中不存在。请使用-Tail尝试。
More infos:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-7.1

wqlqzqxt

wqlqzqxt2#

您需要将代码包含在一个无限循环中(不推荐这样做):

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

这将读取日志的最后5行,如果这些行中的任何一行与提供的模式匹配,则它将写出正在重新启动服务,然后强制重新启动服务,等待5秒并返回到开始并再次检查。

相关问题