Site cover image

🐧 きまぐれクラウド日記

NotionをヘッドレスCMSとして利用しています。 AzureとMirosoft 365 に関することを備忘録と頭の整理の為に書いていきます。

🐧 Exchange Online の予定表で「既定のアクセス権限」を変更する


はじめに

Exchange Online 環境で他人の予定表を見ようとした際、既定では相手の予定表にどんな予定が入っているか見ることはできません。

この状態ですと少々不便ですので、「既定のアクセス権限」を変更して他人の予定表を見ることができるように変更します。

PowerShellで設定します。


環境構築

  • PowerShell version: 5.1.19041.2673
  • モジュール Exchange Online PowerShell

PowerShellウィンドウで以下のコマンドを実行して、Exchange Onlineモジュールをインストールします。
既にインストール済みの方は飛ばしても大丈夫です。

# Exchange Onlineモジュールをインストール
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

インストールが完了したら、以下のコマンドでモジュールをインポートします。

Import-Module ExchangeOnlineManagement

予定表の既定のアクセス権変更

テナント内のすべてのメールボックスの既定のアクセス権を「Reviewer」に変更します。

使用するPowerShell

ExchangeOnlineに接続します。権限は「グローバル管理者」または「Exchage管理者」が必要になります。

# 接続、グローバル管理者 or Exchage管理者
Connect-ExchangeOnline

メールボックスを取得します。会議室や備品は除外したいという場合はフィルターをかけてください。

# すべてのメールボックスを取得
$AllMailBox =  Get-EXOMailBox

共有メールボックスのみの情報を取得する際は以下のように実行します。

# 共有メールボックスの情報を取得
$SharedMailBox = Get-EXOMailBox -RecipientTypeDetails SharedMailbox

現在のメールボックスのタイムゾーンと言語を確認します。

# 現在のメールボックスのタイムゾーンと言語を確認
$settings = foreach($MailBox in $AllMailBox)
{
    Get-MailboxRegionalConfiguration `
    -Identity $MailBox.PrimarySmtpAddress `
    | Select-Object @{
        n="DisplayName"
        e={$MailBox.DisplayName}
    },@{
        n="PrimarySmtpAddress"
        e={$MailBox.PrimarySmtpAddress}
    },Language,DateFormat,TimeFormat,TimeZone
}

メールボックスのタイムゾーンと言語を「日本」に変更します。
これは英語になっている場合があるので変更をします。

# メールボックスのタイムゾーンと言語を日本に変更
foreach($MailBox in $AllMailBox)
{
	Set-MailboxRegionalConfiguration `
	-Identity $MailBox.PrimarySmtpAddress `
	-DateFormat "yyyy/MM/dd" `
	-Language "ja-JP" `
	-TimeFormat "H:mm" `
	-TimeZone "Tokyo Standard Time" `
	-LocalizeDefaultFolderName:$true
}

全メールボックスの予定表を規定のユーザーから参照できるように変更します。
これを行うことで他のユーザーの予定表にどんな予定が入っているか確認することができます。

# 予定表の参照権限を既定のユーザーに与える
foreach($MailBox in $AllMailBox)
{
	$calendar = $MailBox.PrimarySmtpAddress + ":\予定表"
	$calendar
	
	Set-MailboxFolderPermission `
	-Identity $calendar `
	-User "既定" `
	-AccessRights reviewer
}

すべての予定表の参照権限を確認をします。

# 確認
$yotei = foreach($MailBox in $AllMailBox)
{
	$calendar = $MailBox.PrimarySmtpAddress + ":\予定表"
	
	Get-MailboxFolderPermission `
	-Identity $calendar `
	-User "既定" `
    | Select-Object @{
        n="FolderName"
        e={$calendar}
    },User,AccessRights
}

証跡としてCSVファイルを作成します。

「-Encoding utf8BOM」で文字化けする場合は「-Encoding utf8」に書き換えて実行します。

# 確認用のCSVファイル作成
$yotei | export-CSV -Path "保存先のパス+作成するファイル名" -Append -Encoding utf8BOM

以下のように出力されていれば予定表の既定のアクセス権が「Reviewer」に変更されています。

FolderName           User                 AccessRights                                                                 SharingPermissionFlags
----------           ----                 ------------                                                                 ----------------------
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}
予定表                  既定                   {Reviewer}

Exchange Online から切断します。

# Exchange Onlineから切断する
Disconnect-ExchangeOnline -Confirm:$false

まとめ、所感

  • Microsoft 365ではデフォルトで他人の予定表のタイトルを見ることができないので、この設定はほぼマストです。
  • 特定のユーザーの予定表は他ユーザーから見れないようにしたいという要件がある場合は「Set-MailboxFolderPermission」でアクセス権を変更します。

参考