どうもミツシマです。

今回は、各ユーザーのOneDriveの使用容量やSharePointの各サイトの使用容量等をPowershellコマンドで一覧出力する方法を検証してみました。


〜検証〜

SharePoint Onlineを操作するPowershellコマンドとしては、「CSOM」・「SharePoint Online管理シェル」・「PnP Powershell」がありますが、今回は「PnP Powershell」を使用してやってみたいと思います。
※「CSOM」・「SharePoint Online管理シェル」でも出来るかと思いますが、「PnP Powershell」でやるのが一番簡単だったので、今回はこちらを選択しています。
 「PnP Powershell」に関しては以下のサイトを参考にすると良いかもです。
 PnP PowerShell の概要


まずは事前準備としてインストールから!
管理者としてPowershellを起動して

>Install-Module SharePointPnPPowerShellOnline

でインストール出来ます。
インストールが完了したら、下記コマンドでOneDriveや各SharePoint Onlineサイトの使用容量をCSV出力することが出来ます。


Get-AllSiteInfo.ps1

#Sharepoint OnlineサイトURLを変数に代入
$SPOURL ="https://xxxxx.sharepoint.com"

#カレントフォルダ取得
$CurrentFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
$CSVFile = $CurrentFolder + "\SPOSiteInfo.csv"

#資格情報の取得
$UserCredential = Get-Credential

#PnPOnlineへ接続
try{
Connect-PnPOnline -Url $SPOURL -Credentials $UserCredential -ErrorAction Stop
}catch{
#接続でエラー発生の際に処理中断
Write-Host "PnPOnlineへの接続に失敗しました.IDとPWを再確認してください.`r`n" -ForegroundColor Red
Write-Host "処理を中断します.`r`n" -ForegroundColor Red
pause
Exit
}

#OneDriveを含めたすべてのサイト情報を取得
$AllsiteInfo =  Get-PnPTenantSite -IncludeOneDriveSites

#カレントフォルダにCSVファイル出力 ※出力項目:URL、タイトル、言語設定(1041=日本語)、タイムゾーン(20=日本)、ストレージ使用容量(MB)、ストレージ使用容量警告値(MB)、ストレージ上限(MB)
$AllsiteInfo | select Url,Title,Lcid,TimeZoneid,StorageUsage,StorageWarningLevel,StorageMaximumLevel | Export-Csv -Path $CSVFile -Encoding Default -NoTypeInformation

Write-Host "CSVファイルを出力しました.`r`n" -ForegroundColor Green
Write-Host "処理を終了します.`r`n" -ForegroundColor Green

##PnPOnlineから切断
Disconnect-PnPOnline

pause


〜解説〜

特に解説するほどでもないのですが、変数「$SPOURL」を各利用環境に応じて変更する必要があります。それ以外は特に変更する必要がなく、そのままで実行すればps1ファイルと同じ階層に「SPOSiteInfo.csv」というCSVファイルが出力されるコマンドとなります。
当然、最初に接続する際の資格情報を聞かれますが、テナント管理者(SharePoint管理者)権限を持っているMicrosoft 365のIDとPWが必要です。

出力された値はそれぞれ以下のような意味です。
プロパティ値意味
UrlURL
Titleサイトの名前(タイトル)
Lcid言語
TimeZoneIdタイムゾーンID
StorageUsage使用容量(MB)
StorageWarningLevelストレージ使用容量警告値(MB)
StorageMaximumLevelストレージ上限(MB)
※タイムゾーンIDが「20」であれば、「日本(大阪、札幌、東京)」を意味しています。
 タイムゾーンIDが何を示しているかを確認したい場合には「Get-PnPTimeZoneId」で一覧を確認することが可能です!!


実際に「Get-AllSiteInfo.ps1」を実行するとこんな感じです↓↓

成功例
成功例

失敗例
失敗例

出力されるCSVファイル
CSVファイル例


使用する管理者ユーザーが各ユーザーのOneDriveへのアクセス権限がなくても、
使用容量等が確認出来るところとか便利ですね!!


今日の検証はこんなところで終了しますっ(^o^)
スポンサードリンク