PowerShellでイベントログを扱う方法
PowerShellでイベントログを解析する
PowerShellにはイベントログにアクセスする方法が用意されていて、
イベントログをオブジェクトとして扱うことができる。
セキュリティログを取得したら、そのオブジェクトに対してイベントIDでフィルタリングできる。
$events = get-Eventlog security | where {$_.EventID -ge 529 -and $_.EventId -le 539}結果オブジェクトの中身はフォーマットして文字列化できる。
(フォーマットの種類は他にもいろいろある。)
$messages = $events | Format-List
イベントログのバックアップ、クリア
PowerShellからはイベントログのバックアップやクリアなどの操作は直接行えない。
なのでWMI経由でイベントログを取得し操作する必要がある。
# セキュリティログのバックアップ
function backupSecurityLog
{
# セキュリティログを取得する
$slog = gwmi "Win32_NTEventLogFile WHERE LogFileName = 'Security'"
# 特権を有効化 (バックアップ・クリアの操作で必要)
$slog.PSBase.Scope.Options.EnablePrivileges = $true
# セキュリティログをバックアップする。(コンピュータ名 + LOG + 日付YYYYMMDD + .evt)
$bakName = ${env:computername} + "LOG_" + (get-Date -uformat "%Y%m%d") + ".evt"
$slog.BackupEventLog($bakName)
# セキュリティログをクリアする。
$slog.ClearEventLog
}特権を有効にしないとバックアップ・クリアの操作は行えないことに注意。