Windows PowerShellでイベントログをファイルとして保存する
イベントログを.evtファイルとして保存したいケースがたまにある。イベントビューアを起動してファイルを保存するコマンドをWindows PowerShellで書いたもの。わざわざイベントビューアを起動しなくても、スクリプトファイルを実行すれば保存できるようにしたい場合に便利である。
function BackupLog([string]$logName, [string]$savePath)
{
$wmiString = "Win32_NTEventLogFile WHERE LogFileName = '" + $logName + "'"
$log = GWMI $wmiString
$log.PSBase.Scope.Options.EnablePrivileges = $true
if (($savePath).SubString(($savePath).Length - 1, 1) -ne "")
{
$savePath += ""
}
$backupName = $savePath + ${env:computername} + "_" + $logName.Replace("/", "_") + ".evt"
$log.BackupEventLog($backupName)
}
$eventLogs = Get-EventLog -List | Where-Object { $_.Entries.Count -gt 0 }
foreach ($eventLog in $eventLogs)
{
BackupLog $eventLog.Log "C:"
}