どうもミツシマです。

今回はWindowsイベントログをPowershellコマンドにてエクスポート(出力)する方法を検証してみた。


検証環境は以下の通り
SV:Windows Server2016


〜検証〜

今回イベントログをエクスポートしようと考えた理由としては、セキュリティ上の理由からWindowsログを毎日収集・保管する必要がある場面で使えるかな〜と考えた為。
なので、最終目標としてはその日1日のWindowsログ(システム)をネットワーク上のあるフォルダに毎日出力するようにタスクスケジューラを組むこと。

そんな感じで出来たスクリプトがこちら↓↓↓


〜OutputEventLog.ps1〜

#環境変数設定
$NetUseUser = "<接続ユーザー名>"
$NetUseUserPW = "<接続PW>"
$OutputNetworkFolder = "\\サーバ名\Log"
$OutputCSVFileName = "Systemlog.csv"

#ネットワークへ接続するための準備(「net use」コマンド)
cmd /c "net use $OutputNetworkFolder /d /y"
Start-Sleep -Seconds 3
cmd /c "net use $OutputNetworkFolder /user:$NetUseUser $NetUseUserPW"

#昨日の日付を取得(形式:"m/d/yyyy")
$GetTodayDate = Get-Date
$GetYesterdayDate = ($GetTodayDate).AddDays(-1)
[String]$YesterdayDate = [String]$GetYesterdayDate.Month + "/" + [String]$GetYesterdayDate.Day + "/" + [String]$GetYesterdayDate.Year


#CSVファイルの名前に付与する日時を取得(形式:yyyy-m-d)
[String]$LogDate = [String]$GetYesterdayDate.Year + "-" + [String]$GetYesterdayDate.Month + "-" + [String]$GetYesterdayDate.Day
$OutputCSVPath = $OutputNetworkFolder + "\" + $LogDate + "(" + [String]$Env:COMPUTERNAME + ")" + $OutputCSVFileName


#本日の日付を取得(形式:"m/d/yyyy")
[String]$TodayDate = [String]($GetTodayDate).Month + "/" + [String]($GetTodayDate).Day + "/" + [String]($GetTodayDate).Year

#昨日のシステムログを取得
Get-EventLog -LogName "System" -After $YesterdayDate -Before $TodayDate | Select-Object Index,EntryType,TimeWritten,Source,InstanceId,CategoryNumber,Message,UserName | Export-CSV -Encoding Default $OutputCSVPath


〜解説〜

まずは環境変数の設定から。
タスクスケジューラの「System」権限でコマンドを実施する想定なので「net use」コマンドを使用している。その為、そのコマンドで使用する接続ユーザーID・PW・ネットワークフォルダをそれぞれ指定してる。当然、書き込み権限があるユーザーIDが必要である。
また「net use」コマンド実行時に万が一違うユーザー情報でアクセスしている場合を想定して、念の為切断コマンドを実行後、3秒ウェイトして接続コマンドを実行している。

そして最終的に「Get-EventLog」を使用して、コマンドを実行した日から1日前のログをすべて出力するように、日付をそれぞれ指定(取得)している。この辺りは「-After」や「-Before」オプションを使用している。自分が検証した限りでは、ここでのオプションの指定は「m/d/yyyy」という形式で指定している。(なので、例えば2019年3月13日では「3/13/2019」という指定になる。)
※他にも指定の仕方はあるようなのでこれが全てではないと思う。

最終的なログは「yyyy-m-d(コンピュータ名)Systemlog.csv」という名前で今回は出力している。
後はタスクスケジューラで適当な時間に毎日実行すれば取得出来る。
(夜中の1時とか2時くらいでいいと思う。)


一応タスクスケジューラで動作させた際も問題なく動いたので良しとする。


今回の検証以上で終了しようと思う。


P.S.「ちはやふる」の3期始まりましたね!!今後超楽しみです(^o^)
スポンサードリンク