ヘッダー画像

Office365会議室メールボックスの一括作成方法

はじめに

Microsoft365またはOffice365のExchange Onlineで会議室や備品の管理を行いたいというニーズはよくある話だと思います。今回の記事では、初期導入時や拠点拡張時などに利用できるように会議室メールボックスの一括作成方法をご案内していきます。

作業の流れ

  1. 登録する会議室・備品のリストをCSV作成
  2. 配布グループを使ったルームリストの作成
  3. 会議室・備品メールボックスの作成・初期設定

CSVファイルの準備

今回利用するCSVファイルは下記の仕様で準備します。

ルームリストのCSVファイル

カラム詳細
Name表示名を入力します。ここでは「拠点名+会議室・備品リスト」という名前付けルールのもと登録することを前提としています。
Mailメールアドレスを入力します。

会議室・備品作成用のCSVファイル

カラム詳細
Flag会議室または備品の判定をするフラグを入力します。
Name表示名を入力します。
Mailメールアドレスを入力します。
Office拠点名を入力します。
Capacity会議室の定員数を入力します。備品の場合は不要です。
BookingDays最長予約日数を入力します。既定値:180日
MaxMinutes最大予約時間(分)を入力します。既定値:24時間

ルームリストの作成

ルームリストを作成することで、設備予約時の拠点単位やカテゴリ単位での予定確認が可能となり利便性が向上するため作成を推奨しております。例えば会議室Aという名前の会議室が東京にも大阪にもあった場合、検索すると会議室Aが2つ出てきてしまいます。そもそも会議室や備品を選択する際に先に拠点を選んでから選択させることで利用者の迷いを低減させられるかと思います。

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

利用するコマンドの紹介

ルームリストの作成で利用するコマンドはExchange Online のコマンドレットになります。インストール方法や接続方法については別途「Office365 Powershellモジュールまとめ」で記載しておりますので合わせてご確認ください。

コマンド用途
New-DistributionGroupルームリストの配布グループを作成します。

コマンドのオプション解説

エイリアスやメールアドレスをわざわざ指定していますが、ここで値を入れないとonmicrosoft.comドメインのアドレスでグループが出来上がってしまったりしますのであえて値を指定する方針としています。

オプション用途
-Name表示名に利用します。
-Aliasエイリアスを指定します。
-PrimarySmtpAddressメールアドレスを指定します。

実際のソースコードは下記の通りになります。ルームリストをまとめて作りたいなんてそうそうない気もしますが一応CSVからまとめて作れるようにしておきました。

#初期設定
#環境に合わせて変更してください。
$UserName = "管理者アカウント名"
$Passwd = "管理者パスワード"
$RoomListCSVPath = "C:\temp\RoomList.csv"

#接続設定
$CvtPass = ConvertTo-SecureString $Passwd -AsPlainText -Force
$UserCredential = New-Object System.Management.Automation.PSCredential($UserName,$CvtPass)
Connect-ExchangeOnline -Credential $UserCredential

#CSVファイルからRoomListを取得
if (Test-Path -Path $RoomListCSVPath){
    $csv = Import-Csv $RoomListCSVPath
    Foreach ($list in $csv){
        $Name = $list.Name
        $Mail = $list.Mail
        $Alias = ($Mail.Split("@"))[0]

        New-DistributionGroup -Name $Name -Alias $Alias -PrimarySmtpAddress $Mail -RoomList
    }
}

リソースメールボックスの作成と設定

それではリソースメールボックスの作成と設定を行っていきます。作成されたリソースはルームリストに登録させるところまでを一連の流れとして実行させます。

利用するコマンドの紹介

コマンド用途
New-Mailboxリソースメールボックスを作成します。
Set-MailboxRegionalConfigurationタイムゾーンと言語設定を行います。
Set-MailboxFolderPermission権限設定を行います。
Set-CalendarProcessingカレンダーの設定を行います。
Add-DistributionGroupMemberルームリストにリソースを追加します。

カレンダーの権限リスト

カレンダーの権限設定も行いますので、権限のリストを記載しておきます。会議室予約は、自分の予定から会議室を招待する形で運用することを推奨しています。直接登録させてしまうと予定が重複したり、勝手に変更されてしまったりしてトラブルの原因となりかねません。会議室を一部の方限定で利用した場合はこちらをご確認ください。

権限の値詳細
Noneなし
Owner所有者
PublishingEditor発行編集者
Editor編集者
PublishingAuthor発行作成者
Author作成者
NonEditingAuthor非編集作成者
Reviewer参照者
Contributor寄稿者
LimitedDetails空き時間情報、件名、場所

ソースコードは下記になります。RoomListと同様にCSVから情報読み込んで一括処理をかけていきます。備品メールボックスをルームリストに登録できないようですので、備品も会議室として作成しています。

#初期設定
#環境に合わせて変更してください。
$UserName = "管理者アカウント名"
$Passwd = "管理者パスワード"
$ConfListCSVPath = "C:\temp\conflist.csv"

#接続設定
$CvtPass = ConvertTo-SecureString $Passwd -AsPlainText -Force
$UserCredential = New-Object System.Management.Automation.PSCredential($UserName,$CvtPass)
Connect-ExchangeOnline -Credential $UserCredential

#CSVファイルからRoomListを取得
if (Test-Path -Path $ConfListCSVPath){
    $csv = Import-Csv $ConfListCSVPath
    Foreach ($list in $csv){
        $Flag = $list.Flag
        $Name = $list.Name
        $Mail = $list.Mail
        $Alias = ($Mail.Split("@"))[0]
        $Office = $list.Office
        $Capacity = $list.Capacity
        $BookingDays = $list.BookingDays
        $Maxminutes = $list.Maxminutes

        #会議室の処理
        if ($Flag -eq 0){
            New-Mailbox -Room -Name $Name -Alias $Alias -PrimarySmtpAddress $Mail -Office $Office -ResourceCapacity $Capacity        
        #備品の処理
        }elseif ($Flag -eq 1){
            New-Mailbox -Room -Name $Name -Alias $Alias -PrimarySmtpAddress $Mail -Office $Office
        }else{
            Write-Host $Name + "は不正な処理です。"
        }
        
        #リソース作成されてからすぐに次の処理が動くとエラーになるのでおまじない
        Start-Sleep -Seconds 10

        #カレンダーの権限設定
        Set-MailboxFolderPermission -Identity "${Mail}:\Calendar" -User "既定" -AccessRights LimitedDetails 

        #カレンダーのタイムゾーンと言語の設定
        Set-MailboxRegionalConfiguration -Identity $Alias -Language "ja-jp" -TimeZone "Tokyo Standard Time" -LocalizeDefaultFolderName:$True

        #営業時間の設定
        Set-MailboxCalendarConfiguration -Identity $Alias -WorkingHoursStartTime "09:00:00" -WorkingHoursEndTime "18:00:00"

        #自動承諾設定と連続予約可能日数、連続予約可能時間の設定
        Set-CalendarProcessing -Identity $Alias -AutomateProcessing AutoAccept -BookingWindowInDays $BookingDays -MaximumDurationInMinutes $Maxminutes

        #RoomListへの登録
        Add-DistributionGroupMember -Identity "${Office}会議室・備品リスト" -Member $Mail
    }
}

出来上がりのイメージは下記の通りです。[予定表の追加]-[アドレス帳から]-[グローバルアドレス一覧]で検索してください。画像はOutlookで見せていますがOutlook on the webでも同様に利用可能ですのでご確認ください。

リソースリスト

まとめ

いかがだったでしょうか?会議室の権限設定はMicrosoft365管理センターやExchange Online 管理センターではできません。GUIでやるにはリソースメールボックスのフルアクセス許可を割り当ててOutlookなどで呼び出してもらうと権限変更が可能になりますが、手間がかかりすぎるため今回ご紹介したようなPowershell を使った権限設定を行うことが一般的だと思います。運用フェーズのことも考えるとCSVから情報拾って登録するよりもExcel使ってコマンドを作ったほうが利便性は高い気がします。本記事が皆様のシステム導入、運用管理の一助となりましたら幸いです。