PowerShellでイベントログから直近5件のSystemのエラーを取得

powershell コンピュータ
powershell

Get-Eventlogコマンドレットを使うとイベントログの内容を出力することが出来ます。

イベントログの件数が多数出力されるので、Newestオプションで直近5件のみに絞り込み、イベントタイプをErrorのみにします。

Get-EventLog -LogName System -Newest 5 -EntryType Error

こちらをPowerShellの$profileに仕込みPowerShellが起動され都度イベントログが出力されるようにします。

毎回古いErrorが出力されると心臓にわるいので、where-objectで直近24時間に絞りこむと良さそうです。

一日前を取得

(Get-Date).AddDays(-1)

こちらを条件に組み込んでみます。

Get-EventLog -LogName System -Newest 5 -EntryType Error | Where-Object { $_.TimeWritten -gt (Get-Date).AddDays(-1)}

ついでにWarningも試す。

 Get-EventLog -LogName System -Newest 5 -EntryType Warning | Where-Object { $_.TimeWritten -gt (Get-Date).AddDays(-1)}

項目を日時、ソース、メッセージのみに限定

Get-EventLog -LogName System -Newest 5 -EntryType Error | Where-Object { $_.TimeWritten -gt (Get-Date).AddDays(-1)} | Select-Object TimeWritten, Source, Message

結果の例

TimeWritten        Source                        Message
-----------        ------                        -------
2024/12/25 8:22:46 Microsoft-Windows-GroupPolicy ドメイン コントローラーへのネットワーク接続が存在しないため、グループ...

$profileに組み込み例

Write-Host "直近エラー"
Get-EventLog -LogName System -Newest 5 -EntryType Error | Where-Object { $_.TimeWritten -gt (Get-Date).AddDays(-1)} | Select-Object TimeWritten, Source, Message
Write-Host "直近警告"
Get-EventLog -LogName System -Newest 5 -EntryType Warning | Where-Object { $_.TimeWritten -gt (Get-Date).AddDays(-1)} | Select-Object TimeWritten, Source, Message

$profileに組み込むと毎回表示されるので1日1回表示にする方法を検討中…

コメント