どうもミツシマです。

今日もExchange Onlineで検証してみた内容を記載します。
今回はExchange Onlineを使用していて、他の人の予定表を確認・共有するために必要となるアクセス権の変更をPowershellコマンドで一括変更する方法を検証してみました。


検証環境は以下の通り
PC:Windows10


〜検証内容〜

Exchange Onlineを使用していると他のユーザーの予定を確認・共有することが出来ます。(←何を当たり前の事を言ってるんだとコイツ)
しかし、Exchange Onlineを使用する為にユーザーを作成して、Outlookでメール設定しただけでは他の人の予定は「ある」or「ない」しかわからず、詳細が見えません。
これだとあまり意味がないと思います。

そこで、これを確認出来るようにするために予定表のアクセス権を変更してあげる必要があります。
このアクセス権の変更ですが、一人一人のユーザーで変更しないといけない作業なので、GUIで一つずつやるのはかなり面倒。。。。
そこで作成されているユーザーの予定表をPowershellコマンドで一括で変更してみよう!!というのが今回の検証内容。

方法としては2つ考えられました。
  1. 各個人の予定表のアクセス権に、全ユーザーが所属している「グループ」を「参照」権限で追加する
  2. 各個人の予定表のアクセス権にて、「既定」のアクセス権を「参照」権限に変更する

今回は「既定」のアクセス権を変更する方法でやってみました。


コマンド例がこちら↓↓↓


〜一括変更コマンド〜

#ExchangeOnlineへ接続するための認証情報登録
$UserCredential = Get-Credential

#接続(リモートセッションの作成)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

#接続(リモートセッションの作成) ※プロキシ環境の場合
#$proxyOptions = New-PSSessionOption -ProxyAccessType IEConfig -ProxyAuthentication Negotiate
#$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection -SessionOption $proxyOptions

#Exchange Onlineコマンドレットのインポート
Import-PSSession $Session

#予定表の「既定」を「参照」権限にすべて変更(ユーザーメールボックスとリソースメールボックスのみ)
$AllMailbox = Get-Mailbox | Where-Object { ($_.RecipientTypeDetails -eq "UserMailbox") -or ($_.RecipientTypeDetails -eq "RoomMailbox") -or ($_.RecipientTypeDetails -eq "EquipmentMailbox")}
foreach($MailBox in $AllMailbox){
    $MailAddress = $MailBox.PrimarySmtpAddress
    $MailBoxName = $MailBox.Name
    Write-Host "「${MailBoxName}」の予定表のアクセス権限を「参照」に変更します."
    Set-MailboxFolderPermission  -Identity "${MailAddress}:\予定表" -User "既定" -AccessRights Reviewer

    #メールボックスのタイムゾーンが「日本」以外の場合
    #Set-MailboxFolderPermission  -Identity "${MailAddress}:\Calendar" -User "既定" -AccessRights Reviewer
}

#予定表のアクセス権限確認(ユーザーメールボックスとリソースメールボックスのみ)
$AllMailbox = Get-Mailbox | Where-Object { ($_.RecipientTypeDetails -eq "UserMailbox") -or ($_.RecipientTypeDetails -eq "RoomMailbox") -or ($_.RecipientTypeDetails -eq "EquipmentMailbox")}
foreach($MailBox in $AllMailbox){
    $MailAddress = $MailBox.PrimarySmtpAddress
    $MailBoxName = $MailBox.Name
    Write-Host "「${MailBoxName}」の予定表のアクセス権限を確認します."
    Get-MailboxFolderPermission -Identity "${MailAddress}:\予定表"

    #メールボックスのタイムゾーンが「日本」以外の場合
    #Get-MailboxFolderPermission -Identity "${MailAddress}:\Calendar"

    Write-Host `r`n
}

#セッション終了
Remove-PSSession $Session


〜解説〜

予定表のアクセス権を変更するためのコマンドは「Set-MailboxFolderPermission
アクセス権を確認するコマンドは「Get-MailboxFolderPermission

上記を使用して、作成されているメールボックスの中で「ユーザーメールボックス」と「リソース」の予定表のアクセス権を一括で変更しています。
(逆に他に何があるの?というと「証拠開示用メールボックス(Discovery〜)」と「共有メールボックス」があります。が、これらの予定表のアクセス件は変えなくていいだろうという判断です。)
(注)メールボックスを持たない各グループには当然予定表はありません。


ここで注意点が1点
変更する予定表のタイムゾーンが「未設定」の場合には、「Set-MailboxFolderPermission  -Identity "${MailAddress}:\予定表" -User "既定" -AccessRights Reviewer」が失敗します。
その場合には「"${MailAddress}:\予定表"」を「"${MailAddress}:\Calendar"」に変更すれば良い訳だが、実際にはタイムゾーンを「日本」に変更してから、予定表のアクセス権を変更した方が良いと思う。
※タイムゾーンを一括変更する検証は「(Exchange Online)受信トレイが英語表記になる場合の戻し方 〜Set-MailboxRegionalConfiguration〜」で記載してます。


後は変更されたかを確認する為に確認コマンドを実行します。


実際にコマンドを実行するとこんな感じ↓↓↓

コマンド実行画面


ちなみにアクセス権には「参照」(Reviewer)以外にもあり、まとめると以下のような感じ
設定値内容
Noneなし
Owner所有者
PublishingEditor発行編集者
Editor編集者
PublishingAuthor発行作成者
Author作成者
NonEditingAuthor非編集作成者
Reviewer参照者
Contributor寄稿者
LimitedDetails空き時間情報、件名、場所

基本的には「参照」出来ればいいかな〜〜と思うが、他のアクセス権が必要とのことであれば、「 -AccessRights」の部分を変更すればOKのはず!!


今回の検証もこれにて完了!!
Exchange Onlineは便利な反面、それを使いこなす環境をまず作るのが面倒だったりしますね。。。^^;
スポンサードリンク