この記事は「Microsoft 365 Advent Calendar 2024」に参加しています。
15日目の記事です。
Microsoft365 管理者の皆様1年間お疲れ様です。
年末ということでMicrosoft 365でもお掃除してみませんか的なネタです。
Exchange Online でスケジュール管理している多くの企業ではリソース(会議室・備品等)も使われているかと思います。
さて、そんなリソースですが、ユーザーに依頼されて作ったもののそれが実際に使われているか?を把握する術が標準では用意されていないようです。
使われていないリソースを調べるため、Powershell でスクリプトを作ってみました。
スクリプト全体
#---------------------------------------------------------------
# Exchange Online テナント内全リソースの過去6か月間の予約数を取得する # ※上限1000まで
#--------------------------------------------------------------- #[準備] Exchange Online PowerShell モジュールのインストールしておく #Install-Module -Name ExchangeOnlineManagement
# Exchange Online に接続 Connect-ExchangeOnline -UserPrincipalName {適切な権限を持ったアカウント} -ShowProgress $true # リソースメールボックスの取得 $resourceMailboxes = Get-Mailbox -RecipientTypeDetails RoomMailbox, EquipmentMailbox # 各リソースメールボックスの予定数を取得 $results = @() # 検索期間の設定 $startDate = (Get-Date).AddMonths(-6) $endDate = Get-Date foreach ($mailbox in $resourceMailboxes) { try { Write-Output "Processing mailbox: $($mailbox.DisplayName)" $calendarItems = Get-CalendarDiagnosticObjects -Identity $mailbox.Alias -StartDate $startDate -EndDate $endDate -ShouldBindToItem $true $count = $calendarItems.Count $results += [PSCustomObject]@{ DisplayName = $mailbox.DisplayName AppointmentCount = $count ErrorDescription = $null } } catch { $results += [PSCustomObject]@{ DisplayName = $mailbox.DisplayName AppointmentCount = -1 ErrorDescription = $_.Exception.Message } } } # 実行日の日付を取得 $date = Get-Date -Format "yyyy-MM-dd" # CSVファイルに出力 $results | Export-Csv -Path "C:\{ファイルの保存パス}\exo_resouce_reserves_$date.csv" -NoTypeInformation
