PowerShellでSharePointとOneDriveのファイルダウンロードログを取得する方法

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で出力する方法についてご紹介しました。

参考にしていただければ幸いです。

執筆担当者プロフィール
芦澤 茉莉

芦澤 茉莉(日本ビジネスシステムズ株式会社)

金融・保険事業本部所属。主にMicrosoft 365に関する業務に携わっています。

担当記事一覧