0

我有 IBM Cognos TM1 应用程序在 Windows Server 2008 上作为服务运行。当我启动服务时,TM1 将在“D:\TM1\log\”上写入一个名为“tm1server.log”的日志文件。TM1 会持续写这个日志,直到服务准备好,一般需要 3 个小时才能服务准备好。当服务就绪时,TM1 会在日志中写入“TM1 Server is ready”。

我想制作一个脚本来持续检查日志文件,直到写入字符串“TM1 Server is ready”。找到字符串后,我希望脚本运行另一个将向我发送电子邮件的脚本。我已经制作了发送电子邮件的脚本。

有谁能够帮我?

谢谢并恭祝安康,

克里斯

- 编辑 -

我使用 findstr 命令搜索字符串:

findstr /d:d:\TM1\log\ "TM1 服务器准备就绪" "D:\TM1\log\tm1server.log" >> result.log

但 result.log 包含 tm1server.log 的所有内容。

4

2 回答 2

0

在我的服务器上,每次服务器启动时都会写入“TM1 服务器准备就绪”。所以我在一个文件中有很多“TM1 服务器已准备好”。

您可以测试最后返回的“TM1 服务器已准备好”,看看它何时发生,看看它是否发生在过去 5(或其他)小时内,如下所示:

PS E:\TM1_Server_Logs> (Get-Date(select-string .\tm1server.log -pattern '(?<timestamp>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}).*TM1 server is ready' | select -expand Matches | foreach {$_.groups["timestamp"].value} | Get-Date -format "yyyy-MM-dd HH:mm:ss" | Select-Object -last 1)).AddHours(-5) -ge (Get-Date).AddHours(-5)

这是一个很长的单行,但它应该工作。如果它返回 true,您可以决定下一步该做什么。

于 2013-02-27T18:06:38.967 回答
0

你也可以试试

findstr /C:"your token to find" "C:\targetFile.log"
于 2020-08-18T14:24:13.317 回答