はじめに
M365を扱う業務を経験していると一度は監査ログに触れる機会があるのではと思います。
CSV出力したデータの中に含まれているJSON形式のデータをPowerShellを使用して、必要な情報だけを抽出し新規CSVに出力する方法をご紹介いたします。
下記MS公式情報内「手順 2: Power Query エディターを使用してエクスポートされた監査ログを書式設定する」以降の作業を簡略化することを目的としています。
そのため、M365監査ログ取得手順については下記MS公開情報を確認していただければと思います。
事前準備
・M365監査ログ
・PowerShellが利用可能な環境
「AuditData」に含まれるプロパティについて
下記MS公開情報を確認していただき、抽出に必要なプロパティをあらかじめ絞ることをお勧めします。
今回は、下記プロパティを抽出し新規CSVに出力したいと思います。
CreationTime:レコードが作成された時間(UTC表記)
UserId:ユーザ名
Workload:利用されたサービス名
Operation:実行された操作
「AuditData」の変換
1.PowerShellを起動
※起動方法については割愛
2.M365監査ログのファイルパスを変数に格納し読み込む
# M365監査ログのファイルパスを変数に格納
$AuditlogPath = "M365監査ログのファイルパス"
# CSVの読み込みを行い、結果を変数に格納
$csv = Import-Csv -Path $AuditlogPath -Encoding Default
3.M365監査ログ「AuditData」カラムのJSON文字列をJSONオブジェクトに変換
# JSON文字列をJSONオブジェクトに変換し、変数に格納する
$jsonobject = $csv.AuditData | ConvertFrom-Json
4.出力対象のプロパティを選択し、変数に格納
# 抽出対象の値のみを変数に格納する
$outputdata = $jsonobject | Select-Object CreationTime,UserId,Workload,Operation
5.新規CSVに出力する
# JSONオブジェクトをCSV形式に変換し、指定した出力先にCSVを出力する
$outputdata | Export-Csv -Path "出力先パス¥出力ファイル名.csv" -NoTypeInformation -Encoding UTF8
最後に
ExcelのPowerQueryエディターのJSON変換機能を利用せずにJSON形式のデータを読み取りやすい形式へ変換するための方法をご紹介させていただきました。
スクリプト化し、より簡単に変換する方法についても後日記載できればと思います。