【发布时间】:2021-05-09 21:00:48
【问题描述】:
我的服务器上部署了多个 Windows 服务。我想实现一个 PowerShell 脚本,它可以对这些服务的日志进行实时监控。它必须在日志文件中查找关键字(例如错误、异常),一旦出现任何错误,脚本应该向预先配置的电子邮件地址发送通知。 我在网上进行了基本搜索,可以找到一些可以做到这一点的免费软件应用程序,但我并不热衷于在服务器上安装这些应用程序。如果这可以通过基本的 PowerShell 脚本或批处理脚本来完成,并且可以在后台运行,那就太好了。
我找到了可以实时查看文件的 Get-Content 和 Type -wait 命令
Get-Content error.log -wait | where { $_ -match "ERROR" }
非常感谢您在电子邮件通知部分提供的任何帮助,如果您可以添加一些可能有帮助的网络链接。
有点复杂的是日志文件不会是固定的,每天都会创建一个新的日志文件,脚本应该根据文件名或创建日期等自动识别最新的文件。
文件名格式为 8_05_2021.txt、9_05_2021.txt、10_05_2021.txt
【问题讨论】:
-
这个脚本是计划任务吗?如果是这样,该任务的触发器是什么?它会 24x7 全天候运行,还是您打算在每天结束后破坏脚本?
-
@SantiagoSquarzon,这可能是一个计划任务,或者应该持续运行,因为文件监控需要实时。
-
所以日志是每天在包含特定关键字的目录中的新日志?还是系统、应用程序等 Windows 日志?
-
@AbrahamZinala 这些不是 Windows 事件日志,您是对的,日志文件位于一个目录下,并且每天都会创建一个新文件。我们需要在日志文件中查找错误。
-
为工作使用正确的工具。您为什么要尝试编写此脚本(这是一个无限循环(只是一个坏主意)或定时任务要好一点)而不是使用日志收集解决方案?为此使用企业服务。您可以使用Windows FSRM (File Server Resource Manager) 来监视这些文件并关闭其中的数据。 FSRM Configure E-Mail Notifications
标签: windows powershell monitoring