项目:我有一个正在不断添加的日志文件。在此日志文件中,有时会添加一个错误(错误始终包括“无法导入”和唯一 ID)。当此错误添加到日志文件时,我需要通过电子邮件收到警报。
项目的当前状态:我有脚本(它计划每 15 分钟运行一次)使用 Select-String 扫描日志文件,如果发现此错误,则将其添加到名为 alert-(Get -日期).txt。在 PS 脚本结束时,alert.txt 文件会通过电子邮件发送给我。
问题:每天都会创建一个新的日志文件,因此我的脚本只扫描该文件。问题是一旦发现错误,每次后续扫描都会向我发送我已经知道的错误的警报。我希望后续警报仅包含新错误。
当前解决问题的尝试 以下是日志文件中的示例错误:
1/29/2015 13:38:45 1/29/2015 13:38:45 Sales Order User Import Unable to import OHDR_2785_228038_01292015.txt due to required files missing. Files are being removed from current directory to suspense directory.
我已在脚本中添加了在日志文件中提取错误的唯一 ID 的方法。在本例中为 2785。此 ID 和其他错误 ID 被添加到另一个文本文件名 oldAlerts.txt。所以内容看起来像这样:
2785
1182
1353
1555
我想在我的脚本中添加一种方法来为 Select-String 结果排除这些行。到目前为止,这是我的 Select-String:
Get-ChildItem \txtforerp\Import\Log | Where{$_.LastWriteTime -gt (Get-Date)-$ts -AND $_.LastWriteTime -lt (Get-Date)} | select-string -Pattern "Unable to import" | Out-File $path\"$alert.txt"
如何使用 oldAlert.txt 文件中的 ID 作为过滤器,以确保仅将新错误添加到警报中。如果我的方法不是最佳实践,我愿意使用其他方法。