web-dev-qa-db-ja.com

Powershellを使用して、最新のイベントログイベントが1時間以上経過している場合にアクションをトリガーします

バックアップソフトウェアを実行しているサーバーがあり、ソフトウェアには独自のイベントログがあります。次のコマンドを使用して、最新のイベントログエントリを取得できます。

Get-EventLog EventLogName -ComputerName server.example.com -newest 1

それは私にこのような結果を与えます:

Index Time          EntryType   Source                InstanceID Message
----- ----          ---------   ------                ---------- -------
64292 Aug 13 15:51  Information BackupSoftware             29593 Transfer of 1096 KB...

私がやりたいのは、最新のイベントのタイムスタンプが1時間より古い場合に、アクションをトリガーする(たとえば、2番目のスクリプトを起動する)ことです。

どんな助けでもいただければ幸いです。

4
JeffHarbert
$Event = Get-EventLog Application | ? { $_.Source -EQ 'BackupSoftware' } | Sort Time | Select -Last 1
If($Event.Time -LT (Get-Date).AddHours(-1)) 
{ 
     Do-Stuff 
}

これにより、ソースが「BackupSoftware」のアプリケーションログで最新のイベントが検出されます。

$Event = Get-EventLog BackupSoftware | Sort Time | Select -Last 1
If($Event.Time -LT (Get-Date).AddHours(-1)) 
{ 
     Do-Stuff 
}

これにより、ソースやEventIdに関係なく、BackupSoftwareという名前のカスタムログで最新のイベントが検出されます。

どちらの場合も、スクリプトはDo-Stuffイベントが1時間以上経過している場合。

5
Ryan Ries