現在、過去7日間のセキュリティMicrosoftWindowsセキュリティ監査ログをPowerShell経由でcsvにエクスポートしています。
それは機能しますが、非常に詳細になり、適切にフォーマットされていません。たとえば、csvから、「メッセージ」セルにはこれがあります
「アカウントは正常にログオンしました。
件名:セキュリティID:Xアカウント名:-アカウントドメイン:-ログオンID:0x0
ログオンタイプ:3
なりすましレベル:なりすまし
新しいログオン:セキュリティID:Xアカウント名:XXXアカウントドメイン:XXXログオンID:XXXログオンGUID:{XXX}
プロセス情報:プロセスID:0x0プロセス名:-
ネットワーク情報:ワークステーション名:-送信元ネットワークアドレス:XXX.XXX送信元ポート:XXX..........。
上記をcsvに取り込むために、このPowerShellスクリプトを使用しています
[xml]$CustomView = @"
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID=4624 or EventID=4672 or EventID=4648 or EventID=463) and TimeCreated[timediff(@SystemTime) <= 604800000]]] </Select>
</Query>
</QueryList>
"@
Get-WinEvent -FilterXML $CustomView | Export-CSV "C:\CustomView_$(Get-Date -format "yyyy-MM-DD").csv"
次の列のcsvをエクスポートするにはどうすればよいですか?
イベントID、セキュリティID、アカウント名、アカウントドメイン、ログオンID、ログオン、TimeCreated
イベントメッセージ本文の詳細は、イベントXMLに保存されます。イベントをXMLに変換してから、各XMLフィールドを抽出できます。覚えておくべきことは、複数のイベントIDが共通のスキーマを共有している場合にのみクエリを実行する必要があるということです。そうしないと、イベントプロパティが出力で一貫しない可能性があります。プロセスとイベントスキーマの問題を説明する良い記事があります ここ 。
GitHubには Get-WinEventData というコマンドレットがあり、すべての面倒な作業を行います。出力には、マシン名、プロバイダー名、メッセージなど、すべてのメインイベントフィールドのプロパティが含まれます。また、すべてのXMLイベントデータのプロパティも含まれています。これを使用するには、Get-WinEventコマンドをGet-WinEventDataにパイプし、必要なプロパティを選択してから、CSVにエクスポートします。もちろん、事前にGet-WinEventData関数をインポートする必要があります。
使用例:
Get-WinEvent -FilterHashtable @{LogName="Security";Id=4624,4672;StartTime=(Get-Date).AddDays(-1)} | Get-WinEventData | Select-Object TimeCreated,Id,EventDataSubjectUserSid,EventDataSubjectUserName,EventDataSubjectDomainName,EventDataSubjectLogonId | Export-CSV "Output.csv" -NoTypeInformation