0

Windows Server 2008 で IBM Cognos TM1 アプリケーションをサービスとして実行しています。サービスを開始すると、TM1 は「D:\TM1\log\」に「tm1server.log」という名前のログ ファイルを書き込みます。TM1 は、サービスの準備が整うまで、このログを継続的に書き込みます。サービスの準備が整うまで、通常は 3 時間かかります。サービスの準備が整うと、TM1 はログに「TM1 Server is ready」と書き込みます。

「TM1 Server is ready」という文字列が書き込まれるまで、ログ ファイルを継続的にチェックするスクリプトを作成したいと考えています。文字列が見つかったら、メールを送信する別のスクリプトをスクリプトで実行する必要があります。メール送信用のスクリプトを作成しました。

誰でも私を助けることができますか?

よろしくお願いいたします。

クリス

- 編集 -

文字列を検索するには、findstr コマンドを使用します。

findstr /d:d:\TM1\log\ "TM1 Server is ready" "D:\TM1\log\tm1server.log" >> result.log

ただし、result.log には tm1server.log の内容がすべて含まれています。

4

2 に答える 2

0

私のサーバーでは、サーバーが起動するたびに「TM1サーバーの準備ができました」と書き込まれます。そのため、1つのファイルに多くの「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 に答える