SharePointやOneDriveを使った運用の中で、「誰が・いつ・どのファイルをダウンロードしたのか」を確認したい場面が発生することがあります。
本記事では、そうした場面で活用できる方法として、PowerShellを用いてMicrosoft Purview監査ログからSharePoint およびOneDriveのファイルダウンロードのログを取得し、CSV形式で出力する方法をご紹介します。
必要な権限
本手順を実施するには、Microsoft Purviewの監査ログを検索できる権限が必要です。
以下のいずれかが割り当てられている必要があります。
- 「View-Only Audit Logs」(監査ログの表示のみ)ロール
- 「Audit Logs」(監査ログ)ロール
既定では、これらの権限はMicrosoft Purviewポータルの「役割グループ」において、「Audit Reader」および「Audit Manager」の役割グループに付与されています。
事前準備
1.PowerShellを管理者として実行します。
2.以下のコマンドを実行して、Exchange Onlineに接続します。
Connect-ExchangeOnline
3.サインイン画面が表示されたら、組織アカウント(Entra ID)でサインインします。
SharePointおよびOneDriveのファイルダウンロードログの取得とCSV出力
以下のコマンドを入力して、指定期間内のファイルのダウンロードログを取得します。
本記事では、過去7日間のファイルダウンロードログを最大20件取得します。
$Logs = Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-7) `
-EndDate (Get-Date) `
-Operations FileDownloaded `
-ResultSize 20
取得したログの件数を確認したい場合は、以下のコマンドで確認できます。
$Logs.Count
以下のコマンドを入力して、取得したログをCSVファイルに出力します。
$Logs | Export-Csv "$env:USERPROFILE\Downloads\Log_FileDownloaded.csv" -NoTypeInformation -Encoding UTF8
出力されたCSVファイルを開き、日時やユーザー、対象ファイル名などが想定通り取得できていることを確認します。
以下画像のような形式で出力されます。
※本記事では、ユーザー情報などの一部情報をマスクしています。

SharePointのみのファイルダウンロードログの抽出
上記で取得した監査ログには、SharePointとOneDriveの両方のログが含まれています。
以下のコマンドを実行することで、取得済みのログ($Logs)の中から、SharePointでのファイルダウンロードログのみを抽出できます。
$SharePointOnly = $Logs | Where-Object {
$d = $_.AuditData | ConvertFrom-Json
($d.SiteUrl -like "https://*.sharepoint.com/sites/*") -and
($d.SiteUrl -notlike "*-my.sharepoint.com/personal/*")
}
まとめ
本記事では、PowerShellでSharePointとOneDriveのファイルダウンロードログを取得し、CSVで出力する方法についてご紹介しました。
参考にしていただければ幸いです。