Microsoft 365環境で会議室管理を効率化するステップバイステップガイド😎

# はじめに

会議室の管理と一言で言っても、単純なことではありません。手書きのスケジュール、電子メールでのやりとり、独自に作成した管理システムと、各組織でさまざまな方法が試されています。しかし、現代のビジネス環境では効率的かつスムーズな会議室管理が求められています。

そこで注目されるのが、Microsoft 365（M365）の会議室予約・管理機能です。本記事では、M365を活用し、特にOutlook（Exchange Online）で会議室を効率的に管理するステップバイステップのガイドをお届けします。初めてM365を導入する組織はもちろん、既存の会議室管理システムからの移行を検討している組織にも有用な情報を提供できるでしょう。

手間がかかる繰り返しの設定作業を省き、楽に便利に会議室管理を行いましょう～👌

# 手順

会議室管理をし始めるにあたり必要な手順は以下のとおり。

1. Exchange管理センターで会議室リソースの登録をする
1. 会議室リスト（配布リスト）を作成する
1. 会議室リストに会議室リソースを登録する
1. 会議室検索用の情報を登録する
1. 会議室管理・運用のための各種設定をしていく

# 一括作業用のCSVを用意

会議室が数室であっても、繰り返し設定作業が必要なため、**一括作業用のＣＳＶを用意しておくのがおススメです。** 下記のサンプルデータをもとに自社の会議室をリスト化したＣＳＶデータがある前提で話を進めていきます。オプションではありますが、定員や階数も会議室別に入力しておきましょう。

:::note
下記のページにも記載があるように、会議室リソースには建物名やフロアなど、詳細を登録するフィールドが複数ありますが、会議室名に重要な要素をいれることを検討してください。ユーザーが会議予定を入力する際に、詳細を簡単に確認できるようにするためです。

例）**東京オフィス101会議室（定員24名）Teams Rooms対応**

https://learn.microsoft.com/ja-jp/exchange/recipients-in-exchange-online/manage-resource-mailboxes
:::

```meeting-rooms.csv
Name,Alias,PrimarySmtpAddress,ResourceCapacity,Floor
テスト作成会議室（定員30名）,test-room,test-room@<your-domain>.onmicrosoft.com,30,8
```

## 登録済みの会議室リソースの一覧を出力する場合

すでに数個の会議室リソースが登録されている場合は以下のPowerShellで一覧を出力可能です。

```powershell
Get-Mailbox -RecipientTypeDetails RoomMailbox | Select-Object DisplayName, Name, Alias, PrimarySmtpAddress | Export-Csv -Path "C:\RoomMailboxes.csv" -NoTypeInformation -Encoding UTF8
```

# PowerShell Exchangeモジュールを使用できるようにする

以下ドキュメントを参考にPowerShellの設定をしていきます。

https://learn.microsoft.com/ja-jp/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps

## 手順 1: Exchange Online PowerShell モジュールを読み込む

```powershell
Import-Module ExchangeOnlineManagement
```

## 手順 2: 接続して認証する

構文
```powershell
Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]
```

UPNがメールアドレスならば、オプションはひとまずおいといて、以下のように書けばOKです。

```powershell
Connect-ExchangeOnline -UserPrincipalName hogehoge@hogehoge.co.jp
```

# Exchange管理センターで会議室リソースの登録をする

## UIから行う（非推奨）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/2c3d34ce-45b1-b3c1-91cb-1b66eaebed0d.png)

会議室を個別登録する場合は、Exchange管理センターから「会議室リソースを追加する」をクリックして行っていきます。

https://admin.exchange.microsoft.com/#/homepage

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/b531e105-fc27-2b80-ea0e-1f393dce57e9.png)

## 一括登録をする

ひとつずつUI経由で登録を行うと手間がかかるので、PowerShellを利用して一括登録を行います。ファイルのパスはご自身のファイル置き場所に変更してください。

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

上記コードを実行すると会議室リソースがExchangeに登録されます。

## 会議室リソースの言語、日時設定

会議室ごとの言語設定、日時設定をしておきます。

```powershell
Import-Csv -Path C:\temp\meeting-rooms.csv -Encoding UTF8 | foreach {Set-MailboxRegionalConfiguration -Identity $_.Alias -DateFormat "yyyy/MM/dd" -TimeFormat "H:mm" -TimeZone "Tokyo Standard Time" -LocalizeDefaultFolderName:$True -Language "ja-JP"}
```

# 会議室リスト（配布リスト）を作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/50bf8603-f258-d1d5-747c-855a0d50b83d.png)

会議室が登録されるだけでは、Outlookの会議室予約時にでてくる、「会議室の検索を使用して参照する」から会議室を検索することができません。この機能を使用するために会議室リストを作成します。

会議室リストは**会議室のグループ**です。**建物単位で登録**していきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1ee94fd6-b6dd-3696-c93a-e39cff5133ed.png)

## 会議室リストの一覧CSVを作成する

会議室リストも一括登録したいので、配布リストの名前とアドレスを事前に決めておきましょう。

```meeting-rooms-list.csv
Name,PrimarySmtpAddress
東京オフィス,tokyo-office@hogehoge.onmicrosoft.com
横浜オフィス,yokohama-office@@hogehoge.onmicrosoft.com
大阪オフィス,osaka-office@hogehoge.onmicrosoft.com
```

## 会議室リストを一括作成する

```powershell
Import-Csv -Path C:\temp\meeting-rooms-list.csv -Encoding UTF8 | foreach {New-DistributionGroup -Name $_.Name -RoomList -PrimarySmtpAddress $_.PrimarySmtpAddress}
```

# 会議室リストに会議室リソースを登録する

会議室を作成し、会議室リストも作成したので、会議室をそれぞれ会議室リストに登録していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/72c5e894-edd4-a0c2-7158-196f4b324cc6.png)

## 建物別に会議室を登録していく

会議室リストに会議室リソースを登録するためには、以下のようにPowerShellを書きます。

```powershell
Add-DistributionGroupMember -Identity "東京オフィス" -Member test-room@<your-domain>.onmicrosoft.com
```

ただ、こちらも1室ずつ登録していくのは骨が折れるので、下記のように会議室名（Name属性）にビル名などでフィルターをかけてリストを作成し、それを一括で登録することを考えましょう。こういった作業をするためにも、会議室の名称に一貫性を持つことは大事ですね。

```powershell
Get-Mailbox -Filter "Name -like '東京オフィス*'" | foreach {Add-DistributionGroupMember -Identity "東京オフィス" -Member $_.PrimarySmtpAddress}
```

# 会議室検索用の情報を登録する

会議室リストに会議室リソースを登録すると、「会議室の検索」機能を使用することができます。「会議室の検索」機能は、

- 建物（会議室リスト）
- 定員
- フロア
- 機能

の4項目で絞り込み検索ができるため、定員、フロア、機能をそれぞれ登録していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c1dc1bcb-ce2b-51ba-ed37-638dfe52b8c9.png)

## 会議室別に定員を登録する

PowerShell で会議室メールボックスに「定員」を登録する際は、下記コマンドを実行します。冒頭に作成した会議室一覧のCSVに入力した**ResourceCapacity** を使用して設定します。

```powershell
Import-Csv -Path C:\temp\meeting-rooms.csv -Encoding UTF8 | foreach {Set-Mailbox -Identity $_.Alias -ResourceCapacity $_.ResourceCapacity}
```

## 会議室別に階数を登録する

PowerShell で会議室メールボックスに「階数」を登録する際は、下記コマンドを実行します。冒頭に作成した会議室一覧のCSVに入力した**Floor** を使用して設定します。

```powershell
Import-Csv -Path C:\temp\meeting-rooms.csv -Encoding UTF8 | foreach {Set-Place -Identity $_.Alias -floor 10　$_.Floor}
```

## 会議室別にタグを登録する

会議室にタグを登録していきます。タグは会議室に置いてある備品類で検索する際に使用するものです。例えば、Zoom RoomsやTeams Rooms、プロジェクターが置いてある部屋はそれで検索できるようにしておくのがよいでしょう。個別に登録していってもいいですし、CSVに**Tag**列を作成して一括登録することももちろん可能です。

上書き保存されるので、登録時には、必要なものをまとめて登録しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/7e51f4a1-3e58-8fcc-0b11-5f1717f8829c.png)

```Tag追加.powershell
Set-Place -Identity test-room@<your-domain>.onmicrosoft.com -Tag "Zoom Rooms"
```

既定で選択項目のあるビデオやディプレイ、音声については、

- -VideoDeviceName
- -DisplayDeviceName 
- -AudioDeviceName

で追加することができます。

```VideoDeviceName追加.powershell
Set-Place -Identity test-room@<your-domain>.onmicrosoft.com -VideoDeviceName "DTEN"
```

## 車いす対応（バリアフリー）の会議室を登録する

バリアフリーは検索結果画面で確認できる情報になりますので、可能な限り登録しておいた方が利用者にとっての体験がいいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/7eb4260e-77bd-c021-ed89-618b6d9491ca.png)

```powershell
Set-Place -Identity test-room@<your-domain>.onmicrosoft.com -IsWheelChairAccessible $true
```

# 会議室管理・運用のための各種設定をしていく

会議室の登録が終わったところで、今度は運用業務に必要になりそうな設定を見ていきます。

## 一般ユーザーからの会議室リソースの見え方を変更

一般ユーザーが会議室リソースを直接参照したときの見え方も決めておきましょう。
**既定**は**AvailabilityOnly**となっていて、下図のように「予定あり」表示となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/3696cc39-93f0-6615-536e-904f6e35eff7.png)

会議室リソースのアクセス権にはもう1種類、**LimitedDetails**があり、こちらに変更すると、会議室の件名がみられるようになります。

変更するためのコードは以下。会議室リソースの具体的なカレンダーメールボックスを指定する必要があるため、`-Identity`にはエイリアスの後ろに`:\予定表`をつけて指定します。

```powershell
Set-MailboxFolderPermission -Identity test-room:\予定表 -User 既定 -AccessRights LimitedDetails
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1ebeb0c2-e38c-4e62-cece-a09355b5061e.png)

どちらの場合でも、フルアクセス権のあるユーザーからはタイトルや予約者を確認することはできます。

## 何日先まで予約できるかを設定する

既定値では180日先までユーザーは予約をすることが可能です。
運用上、予約可能な日数を変更したい場合は以下のように設定します。
サンプルコードでは60日先まで予約できます。

```powershell
Set-CalendarProcessing -Identity test-room@<your-domain>.onmicrosoft.com -BookingWindowInDays 60
```

これに違反した会議室を取ろうとした場合、ユーザーには理由付きの辞退メールが届きます。**「〇月〇日より前からのみ予約できます」** と明示されているのがいい感じですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/5c77d94b-8c56-7a54-864e-698938c7fce7.png)

## 定期的な予定を入れさせない

定期的な打ち合わせをユーザーに許可してしまうと、不要な予約が乱立してしまう可能性もあります。以下のコードを実行すると、定期的な予定作成をブロックすることが可能です。

```powershell
Set-CalendarProcessing -Identity test-room@<your-domain>.onmicrosoft.com -AllowRecurringMeetings $False
```

定期的な予定を入れようとした場合、ユーザーには要求辞退のメールが理由付きで届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c3b24fd1-4d1b-5ac5-74b7-1686ca0d88cd.png)

## 予約時間の長さを制限する

会議室を最長何時間まで予約できるかを決めることができます。既定値は24時間。指定は分単位で行うため、4時間にセットしたい場合は240と入力します。

```powershell
Set-CalendarProcessing -Identity test-room@<your-domain>.onmicrosoft.com --MaximumDurationInMinutes 240
```

4時間以上の会議を予約しようとすると、ユーザーには要求辞退のメールが理由付きで届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e741ec82-9200-ad2f-e5c9-a30658db1dc0.png)


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

デフォルトの設定では、`-AddOrganizerToSubject`が`true`になっているため、会議の主催者名が会議タイトルに追加されます。

動きとしては、以下のようになります。

件名 テスト会議
主催者 太郎
↓
件名 太郎テスト会議

また、`-DeleteSubject`というプロパティが既定で`true`となっており、会議予約のタイトルを削除します。ですので、既定のままでは、件名が削除されたうえで、開催者の名前が追加されるので、結果的に会議室リソースの件名に登録されるのは開催者名のみになっています。

件名には件名のみを表示したい場合は、上記2つのオプションを`false`にする必要があります。

```powershell
Import-Csv -Path C:\temp\meeting-rooms.csv -Encoding UTF8 | foreach {Set-CalendarProcessing -Identity $_.Alias -AddOrganizerToSubject $False -DeleteSubject $False}
```

この設定後に確認すると、件名がそのまま残っているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/3f72fe3b-3e56-9e11-97bf-884d520d828e.png)

## メールTipの実装

カレンダー上で会議室を予約しようと「場所」に入れた際に、会議室ごとに設定したメッセージを画面上部に表示することができます。 **予約前に確認できるメッセージ**になるので、予約にあたっての注意事項はこちらでいれるのがよいでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/44da67ce-4b63-b183-36a1-0ecf7f4f00c8.png)

```powershell
Set-Mailbox -Identity test-room@<your-domain>.onmicrosoft.com -MailTip "文字列"
```

## 返信メールへの追加コメントを設定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/02a69841-b88e-b11b-bf58-aea656acfce2.png)

Outlookで会議室を予約すると、既定の動作では主催者に会議室リソースより自動で返答メールが届きます。そのメールの緑枠で囲った部分にコメントを入れることができます。

`-AddAdditionalResponse`を`$true`にしたうえで、`-AdditionalResponse` のあとに追加したいコメントをいれていきます。

```powershell
Set-CalendarProcessing -Identity test-room@<your-domain>.onmicrosoft.com -AddAdditionalResponse $true -AdditionalResponse 次の予約者が時間通り入室できるよう、予約終了時間の5分前に退出するようご協力をお願いします。
```

## 非公開設定の扱いを設定する

# 運用Tips

## 会議室の管理担当者にフルアクセスを与える

会議室の管理担当者は予約時間や予約可能な日付を無視して予約を行いたいですよね。セキュリティグループや配布グループを使用して、アクセス権を設定してあげれば、一般ユーザーではできない予約行為も会議室リソースに直接アクセスをして実行することができます。

```powershell
Import-Csv -Path C:\temp\meeting-rooms.csv -Encoding UTF8 | foreach {Add-MailboxPermission -Identity $_.PrimarySmtpAddress -User <セキュリティグループなど> -AccessRights FullAccess}
```


:::note
会議室リソースに直接アクセスするには、

https://outlook.office.com/calendar/<会議室リソースのアドレス>/view/month

をブックマークしておくと便利です。
:::

## 指定のグループからのみ予約可能な会議室を作成する。

役員専用の会議室、そのフロアで勤務している人専用の会議室など、社員全員が予約できると運用上問題がある場合もあります。その場合は以下のようにセキュリティグループや配布グループを指定してあげます。

- `-BookInPolicy`パラメーターは、会議出席依頼を自動的に承認される会議室リソースに送信できるユーザーまたはグループを指定します。
- `-AllBookInPolicy`パラメーターは、すべてのユーザーから会議室リソースへのポリシー内要求を自動的に承認するかどうかを指定します。

```powershell
Set-CalendarProcessing -Identity 東京オフィス101会議室 -AutomateProcessing AutoAccept -BookInPolicy <グループメールアドレス> -AllBookInPolicy $false
```

## `DisplayName`と`Name`

会議室リソースは、`DisplayName`と`Name`という別々の項目を持っています。Exchange管理センターからリソースを作成すると、そのときに指定した名前が両方にセットされます。しかし、その後表示名（`DisplayName`）を変えても、`Name`は変更されません。

Teams Rooms機材によっては、機材に表示される名前は`Name`属性を利用している場合があるため、UIでは名前を変えたのに、機材の表示名は変わらないということが起こります。

# (参考)備品リソースの作成

作成時（New-Mailbox）に`-Equipment` をつける。
基本的にはその他の動作は会議室リソースと同じです。

```powershell
New-Mailbox -Name $_.Name -Alias $_.Alias -Equipment
```

# さいごに

この情報が役立ったら**いいね、ストック**、**SNSへシェア**をお願いします👍
質問やコメントがあればコメント欄へどうぞ。

# 参考記事

## PowerShellのインストール関連

https://learn.microsoft.com/ja-jp/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps

https://learn.microsoft.com/ja-jp/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#install-the-exchange-online-powershell-module

https://www.powershellgallery.com/packages/ExchangeOnlineManagement

https://learn.microsoft.com/ja-jp/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps

## PowerShellの主なコマンドページ

[New-Mailbox](https://learn.microsoft.com/ja-jp/powershell/module/exchange/new-mailbox)
[Set-Mailbox](https://learn.microsoft.com/ja-jp/powershell/module/exchange/set-mailbox?view=exchange-ps)
[Set-CalendarProcessing](https://learn.microsoft.com/ja-jp/powershell/module/exchange/set-calendarprocessing?view=exchange-ps)
[Set-MailboxFolderPermission](https://learn.microsoft.com/ja-jp/powershell/module/exchange/set-mailboxfolderpermission?view=exchange-ps)
[Set-Place](https://learn.microsoft.com/ja-jp/powershell/module/exchange/set-place?view=exchange-ps)
[Add-MailboxPermission](https://learn.microsoft.com/ja-jp/powershell/module/exchange/add-mailboxpermission?view=exchange-ps)

## 参考にしたブログ

https://kurattyodiary.hatenablog.com/entry/setmtrproperty

https://kurattyodiary.hatenablog.com/entry/createdmtrlist

https://gn-office.pro/archives/383

https://gn-office.pro/archives/383

https://www.engineer-base.net/exchange-online-%e7%89%b9%e5%ae%9a%e4%bc%9a%e8%ad%b0%e5%ae%a4%e3%81%ae%e4%ba%88%e7%b4%84%e3%82%92%e7%a6%81%e6%ad%a2%e3%81%97%e3%81%9f%e3%81%84/

https://www.isoroot.jp/blog/4314/