PowerShell で Microsoft 365 の会議室を一括登録する

2020年9月28日

前回に続いて、「PowerShell で Microsoft 365 の〇〇を一括登録する」シリーズです。今回は会議室を一括登録します。

CSV の準備

会議室の場合は、以下のような CSV を作成します。文字コードは UTF-8、改行コードは CRLF で。後でパスを指定することになるので、わかりやすい場所に保存しておきます(C:\temp\room.csv など)。

Name,Alias,PrimarySmtpAddress,ResourceCapacity
A会議室,room_a,room_a@example.com,8

ResouceCapacity は会議室の定員です。

一括登録の実行

以下のコマンドを実行して Exchange に接続します。

$UserCredential = Get-Credential
# Microsoft 365 のログイン情報を入力

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking

その後、以下のコマンドを実行して一括登録します。

Import-Csv -Path C:\temp\room.csv -Encoding UTF8 | foreach {New-Mailbox -Name $_.Name -Alias $_.Alias -ResourceCapacity $_.ResourceCapacity -Room} | Export-Csv -Path C:\temp\room_result.csv

実行結果は C:\temp\room_result.csv に出力されるので確認しておきましょう。

メールボックスの言語設定&予定表のアクセス権限の設定

こちらについては、前回も説明したので、コマンドだけ紹介します。以下のコマンドを実行すると、言語設定が日本語に、他のユーザーが会議室に入っている予定情報の詳細を見られるようになります。

# メールボックスの言語設定
Get-Mailbox -Filter "RecipientTypeDetails -eq 'RoomMailbox'" | foreach {Set-MailboxRegionalConfiguration -Identity $_.Alias -DateFormat "yyyy/MM/dd" -TimeFormat "H:mm" -TimeZone "Tokyo Standard Time" -LocalizeDefaultFolderName:$True -Language "ja-JP"}

# 予定表のデフォルトアクセス権限の設定
Get-Mailbox -Filter "RecipientTypeDetails -eq 'RoomMailbox'" | foreach {Set-MailboxFolderPermission -Identity "$($_.Alias):\予定表" -User "Default" -AccessRights Reviewer}

コマンドの動きとしては、メールボックス情報を取得して foreach でループさせつつ、設定を行っています。-Identity "$($_.Alias):\予定表" の部分が個人的には見慣れない書き方だったのですが、部分式演算子(Sub-Expressions)というそうです。$($変数名) で、変数の中身を展開することができます。$_.Alias が room_a ならば、-Identity "room_a:\予定表" になるわけです。

会議室の予定表に会議の件名を表示する

デフォルトの設定では、会議室を参加者に指定して会議を作成すると、会議室の予定表には招集した人の名前が表示されます。誰が会議室を押さえたかがわかるだけでよければ、このままの設定でよいと思いますが、会議の件名を表示するように設定するには、以下のコマンドを実行します。

Get-Mailbox -Filter "RecipientTypeDetails -eq 'RoomMailbox'" | foreach {Set-CalendarProcessing -Identity $_.Alias -AddOrganizerToSubject $False -DeleteSubject $False}
この記事を書いた人
グッドネイバー

“ Webに悩むお客さまの「よき隣人」でありたい ” をモットーに、Web システム開発(主に Laravel)、Web マーケティング支援の仕事をしています。お仕事のご依頼・ご相談はこちらからお気軽にどうぞ。