evtx形式で取得する方法の記事が少ないので、載せます
※ver2以上で動作確認済み
# イベントログ出力関数を定義
# 引数1:ログ種別(System,Application) 引数2:出力先フォルダ(C:¥evtxlog など)
function get-evtxlog ($logname,$outpath) {
# 開始日付(100日前)と終了日付(今日)を取得し、
# イベントログの選択に使用するクエリ(XPATH形式)に格納する
# 開始日付指定(100日前を指定する場合、100と記述する)
$fromDay = 100
# 開始日付
$startTime = (Get-Date).AddDays(-$fromDay)
# 終了日付(今日)
$endTime = (Get-Date)
# イベントログの選択に使用するクエリ(XPATH形式)に渡すため、システム時刻(UTC)に変換する
$startUtcTime = [System.TimeZoneInfo]::ConvertTimeToUtc($startTime).ToString("yyyy-MM-ddTHH:mm:ssZ")
$endUtcTime = [System.TimeZoneInfo]::ConvertTimeToUtc($endTime).ToString("yyyy-MM-ddTHH:mm:ssZ")
# イベントログの選択に使用するクエリ(XPATH形式)
$filter = @"
Event/System/TimeCreated[@SystemTime>='$startUtcTime'] and
Event/System/TimeCreated[@SystemTime<'$endUtcTime']
"@
# 出力ファイル名を作成しておく
# yyyy-MMdd-HHmm-ss形式の今日日付(出力ファイルの名前用)
$YYYYMMDD = $endTime.ToString("yyyy-MMdd-HHmm-ss")
# 出力ファイル(ログ種別_yyyy-MMdd-HHmm-ss)
$outfile = "${outpath}\${logname}_${YYYYMMDD}_.evtx"
# .Netクラスのメソッドを使って出力
# System.Diagnostics.Eventing.Reader.EventLogSession クラスをオブジェクト化
$evsession = New-Object -TypeName System.Diagnostics.Eventing.Reader.EventLogSession
# ExportLog メソッドを実行
# 引数は、ログ種別、"LogName"(FilePathかLogName)、クエリ、出力ファイル
$evsession.ExportLog($logname,"LogName",$filter,$outfile)
}
# イベントログ出力関数の定義終了
#### 関数実行
try {
# ログ種別エラー用テストコード(コメントアウト)
# get-evtxlog "Syste" "C:\evtlog"
# 出力先フォルダエラー用テストコード(コメントアウト)
# get-evtxlog "System" "C:\qevtlog"
# Systemイベントログを取得
get-evtxlog "System" "C:\evtlog"
# Applicationイベントログを取得
get-evtxlog "Application" "C:\evtlog"
} catch {
# 1で終了
exit 1
}