SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Exchange Online の予定表のアクセス権を PowerShell で変更

2 comments

Exchange Online のメールボックスユーザーの予定表のアクセス権ですがデフォルトでは以下のように設定されています。
image

既定のユーザーは [空き時間情報] のみ参照が許可されており、実際の予定は見ることができません。
企業によっては原則として全員の予定の内容 (プライベート設定されている予定は除く) を見れることを求められることがあります。

ユーザーが自分で設定を変更することで予定表を公開することができますが、ユーザーの作業を発生させずに、管理者が一括で設定をすることを求められることがあります。

今回は予定表のアクセス権を一括で変更するための方法を見ていきたいと思います。

■PowerShell を使用して一括でアクセス権を変更


Exchange Online の操作は PowerShell を使うことができますので、PowerShell で一括変更をしてみたいと思います。

$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic ?AllowRedirection
Import-PSSession $Session
try{
$user = Get-User -Filter {(RecipientType -eq "UserMailbox") -and (Title -eq $null)}
}catch{
Write-Host "検索条件に一致するデータが存在しませんでした。終了します。"
return
}

foreach ($tmp in $user){
$upn = $tmp.UserPrincipalName
try{
Set-MailboxFolderPermission -Identity "$upn`:予定表" -User "既定" -AccessRights AvailabilityOnly -ErrorAction Stop
}catch{
Set-MailboxFolderPermission -Identity "$upn`:Calendar" -User "既定" -AccessRights AvailabilityOnly -ErrorAction Stop
}
}

Remove-PSSession $Session

 

上記のスクリプトは "既定" のアクセス権を AvailabilityOnly (空き時間情報) に設定しているのでデフォルトの設定と同じにしています。

アクセス権は、

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

 

等を設定することができます。
また、ユーザー設定のアクセス権も設定ができるので [ReadItems、CreateItems、EditOwnedItems、DeleteOwnedItems、EditAllItems、DeleteAllItems、CreateSubfolders、FolderOwner、FolderContact、FolderVisible] 個別に設定することで、ユーザー指定の権限を付与することもできます。

ユーザーがメールボックスにアクセスする前は、予定表は Calendar というオブジェクト名になっているので、その対策として [予定表] で権限の設定が失敗した場合は [Calendar] に対して権限を設定するようにしています。

今回のスクリプトではメールボックスを持っているユーザーを対象としていますが、ユーザーの属性を使用してフィルタリングができますので、特定の部署の場合は権限を設定するということもできます。
# foreach 内で、条件分岐する方法をとることもできるかと。

アクセス権は以下のようなスクリプトで確認することができます。

$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic ?AllowRedirection
Import-PSSession $Session
try{
$user = Get-User -Filter {(RecipientType -eq "UserMailbox")} -ErrorAction Stop
}catch{
Write-Host "検索条件に一致するデータが存在しませんでした。終了します。"
return
}
foreach ($tmp in $user){
$upn = $tmp.UserPrincipalName
try{
$mfp = Get-MailboxFolderPermission -Identity "$upn`:予定表" -ErrorAction Stop
}catch{
$mfp = Get-MailboxFolderPermission -Identity "$upn`:Calendar" -ErrorAction Stop
}
foreach ($tmpmfp in $mfp){
Write-Host $tmp.DisplayName ":" $tmp.UserPrincipalName ":" $tmpmfp.FolderName ":" $tmpmfp.user ":" $tmpmfp.AccessRights
}
Write-Host "——————"
$error.clear()
}

Remove-PSSession $Session

 

展開時にデフォルトでどこまで予定表が見えるようにするかは悩ましいところではありますが、空き時間情報だけだと電話応対で困ることがあるかな~と思っています。
会議で離席なのか外出で離席なのかわからないと取次方法に困りますよね。

Ofice 365 の Exchange Online のベースは Exchange 2010 ですので、オンプレミスの Exchange 2010 でも使うことができるかと。
# 試せていないですが…。

Share

Written by Masayuki.Ozawa

2月 13th, 2012 at 8:04 am

2 Responses to 'Exchange Online の予定表のアクセス権を PowerShell で変更'

Subscribe to comments with RSS or TrackBack to 'Exchange Online の予定表のアクセス権を PowerShell で変更'.

  1. […] というときはOzawaさんのブログで紹介されているような方法で実行できるようになるわけです。 […]

  2. やはり、今の Exchange のベースは、Exchange Server 2010 ですね♪
    実案件での Delivery だけではなく、個人的にもいろいろと Exchange Server 2010 にはどっぷり浸かっていたおかげで、
    大して調べなくとも、Exchange Online にかなり応用できてます。
    ・・・ Exchange 2010 SP 3 は、優等生でしたね。

    Takumi Sato

    3 4月 17 at 23:48

Leave a Reply