こんにちは、吉田です!
今回はShare PointのファイルやフォルダのサイズをPower Shellを使用して取得する方法を紹介していきたいと思います。
使用環境
今回私が使用した環境は以下になります。
・Windows Power Shell 7.5.2
・Microsoft.Graph 2.29.0
実行したコマンド
それでは実際にコマンドを解説していきたいと思います。
①準備
前提としてPower Shellを起動する際は[管理者として実行]をクリックします。
まずはSharePoint 上の ファイル情報を取得したり処理するために以下のコマンドを実行します。
ログイン画面では見たいSharePointの組織のグローバル管理者でログインします。
(その他ユーザーはMgGraphに対する管理者の承認が必要です。ログイン後にアクセス許可を送る画面が表示されるのでそちらで申請します。)
# Microsoft Graph PowerShell SDK のインポート
Import-Module Microsoft.Graph.Files
# 必要に応じてインストール(まだの方は)
Install-Module Microsoft.Graph -Scope CurrentUser
# 必要なスコープでログイン
Connect-MgGraph -Scopes "Files.Read.All", "Sites.Read.All"
②サイトを検索する
以下のコマンドを実行する、赤字の箇所は調べたいShare pointのURLの赤字の箇所に変更してください。
https://〇〇〇〇.sharepoint.com/sites/〇〇〇〇
# サイトURLの一部を含めて検索
$site = Get-MgSite -Search "testsite01"
$drive = Get-MgSiteDrive -SiteId $site.Id
$drive | Select-Object Id, Name, WebUrl
実行すると以下のような結果が表示されます。

ここにはファイルが入っているサイトのラベルとURLが表示されます。
実際のサイトだとこの箇所になります。

③フォルダー一覧を取得
以下のコマンドを実行してフォルダーを実行する。赤字の箇所は調べたいラベルの名前に変更してください。
# 必要なラベルを選択する
$targetDrive = $drive | Where-Object { $_.Name -eq "ドキュメント" }
$driveId = $targetDrive.Id
#フォルダーの一覧を取得
Get-MgDriveRootChild -DriveId $driveId
実行すると以下のような結果が表示されます。

ラベルの中にあるファイルやフォルダー一覧が全て表示され、尚且つID、URL、サイズ、ファイルの更新日時も表示されます。実際のサイトだとこの箇所になります。

④フォルダーの中のファイル一覧を取得
以下のコマンドを実行してフォルダーの中のファイル一覧を取得する。赤字の箇所は④で表示された該当のフォルダーのIDに変更してください。
#フォルダーのIDを変数に代入
$folderId = "01OTJQAXYJNEKLWLY26JHIOCF7F3KEUIKD" # test2 の ID
#フォルダ内のアイテム一覧を取得
$items = Get-MgDriveItemChild -DriveId $driveId -DriveItemId $folderId
#アイテムを抽出する
$items | Where-Object { $_.File -ne $null } | ForEach-Object {
[PSCustomObject]@{
Name = $_.Name
Size_KB = $_.Size
MimeType = $_.File.MimeType
Id = $_.Id
} | Format-List
""
}
実行すると以下のような結果が表示されます。

フォルダーの中にあったファイルの名前、サイズ、ファイルの種類、IDが全て表示されました。
終わりに
いかがでしたでしょうか!意外と簡単にサイズが取得できました。フォルダーの中のファイルのサイズまで一覧で確認できるのはかなり便利かなと思いました。是非お困りの方は実践してみてはいかがでしょうか。
最後まで読んでいただきありがとうございました!