共有メールボックスのアクセス権を一括設定する方法について記載する。共有メールボックスのアクセス権を一度全て初期化したのち、新しく必要なアクセス権を設定しなおす。新規導入時や異動時期等にアクセス権の設定を行う際に使用してほしい。
検証環境について
動作確認した検証環境は以下の通り。
OS:Microsoft Windows 11 Enterprise
OSbuildバージョン:10.0.22621
PowerShellのバージョン:7.4.0
ExchangeOnlinePowershellのモジュール名とバージョン
ExchangeOnlineManagement:3.4.0サインインアカウントの権限はグローバル管理者。
使用するコマンド
Get-Mailbox
使用例
Get-Mailbox -Identity share001@****.onmicrosoft.com -RecipientTypeDetails SharedMailbox取得できる情報例
Name Alias Database ProhibitSendQuota ExternalDirectoryObjectId
---- ----- -------- ----------------- -------------------------
share001 share001 APCPR21DG198-db519 99 GB (106,300,440,… 51d19379-c60e-4b11-be19- …
share002 share001 APCPR11DG751-db487 99 GB (106,300,440,… 019eaf48-b01c-4998-9884- …
share003 share001 APCPR74DG364-db115 99 GB (106,300,440,… 1732862a-bb1b-5250-b377- Set-Mailbox
Get-RecipientPermission
使用例
Get-RecipientPermission -Identity share001@****.onmicrosoft.com -ResultSize unlimited取得できる情報例
Identity Trustee AccessControlType AccessRights Inherited
-------- ------- ----------------- ------------ ---------
share001 NT AUTHORITY\SELF Allow {SendAs} False
share001 user001@****.onmicrosoft.com Allow {SendAs} False
share001 user001@****.onmicrosoft.com Allow {SendAs} FalseAdd-RecipientPermission
Remove-RecipientPermission
Remove-MailboxPermission
Add-MailboxPermission
CSVファイルを作成する
$csvSavePath = "$env:USERPROFILE\Desktop"
#CSVのファイル名
$csvFileName = "shareMailboxAccsess.csv"
$accountInfoCSV = [PSCustomObject]@{
Identity = $null
User = $null
AccsessRights = $null
}
$accountInfoCSV | Export-Csv -Path "${csvSavePath}\${csvFileName}" `
-Encoding utf8 -NoTypeInformationCSV記入例
| Identity | User | AccsessRights |
|---|---|---|
| sharemail001@****.onmicrosoft.com | user001@****.onmicrosoft.com | FullAccess |
| sharemail001@****.onmicrosoft.com | user001@****.onmicrosoft.com | SendAs |
| sharemail002@****.onmicrosoft.com | user001@****.onmicrosoft.com | FullAccess |
| sharemail002@****.onmicrosoft.com | user002@****.onmicrosoft.com | SendOnBehalf |
CSVファイルを読み込みアクセス権を再設定する
#CSVの保存先を指定する
$csvSavePath = "$env:USERPROFILE\Desktop"
#読み込むCSVファイル名を指定する
$csvFileName = "shareMailboxAccsess.csv"
#編集したCSVファイルを読み込む
$shareMailboxAccessList = Import-Csv -Path "${csvSavePath}\${csvFileName}"
#ExchangePowerShellに接続する
Connect-ExchangeOnline -ShowBanner:$false
#全ての共有メールボックスを取得する
$sharedMailboxlist = Get-Mailbox -RecipientTypeDetails SharedMailbox `
-ResultSize unlimited
<# 共有メールボックスの既存のアクセス権を一度全て削除する #>
<#
全ての共有メールボックスを読み込む
[読み取り及び管理アクセス許可]の権限の情報を確認なしでリセットする
#>
$sharedMailboxlist |
Remove-MailboxPermission -ResetDefault -Confirm:$false
<#
全ての共有メールボックスを読み込む
付与されている権限を取得
共有メールボックス自身の権限以外のアクセス権情報を抽出
[メールボックス所有者として送信するアクセス許可]の権限を確認なしで削除する
#>
$sharedMailboxlist |
Get-RecipientPermission -ResultSize unlimited |
Where-Object{$_.Trustee -ne "NT AUTHORITY\SELF"} |
Remove-RecipientPermission -AccessRights SendAs -Confirm:$false
<#
全ての共有メールボックスを読み込む
[代理人として送信するアクセス許可]の権限を削除する
#>
$sharedMailboxlist |
Set-Mailbox -GrantSendOnBehalfTo $null
<# 新しいアクセス権を付与する #>
#フルアクセス権を付与するアカウント抽出する
$fullAccessAccountList = $shareMailboxAccessList |
Where-Object {$_.AccsessRights -eq "FullAccess"}
#[読み取り及び管理アクセス許可]の権限を付与する
foreach($fullAccessAccount in $fullAccessAccountList){
Add-MailboxPermission `
-Identity $fullAccessAccount.Identity `
-User $fullAccessAccount.User `
-AccessRights FullAccess
}
#所有者権限を付与するアカウントを抽出する
$sendAsAccountList = $shareMailboxAccessList |
Where-Object {$_.AccsessRights -eq "SendAs"}
#[メールボックス所有者として送信するアクセス許可]の権限を付与する
foreach($sendAsAccount in $sendAsAccountList){
Add-RecipientPermission `
-Identity $sendAsAccount.Identity `
-Trustee $sendAsAccount.User `
-AccessRights SendAs`
-Confirm:$false
}
#代理人権限を付与するアカウント抽出する
$sendOnBehalfAccountList = $shareMailboxAccessList |
Where-Object {$_.AccsessRights -eq "SendOnBehalf"}
#[代理人として送信するアクセス許可]の権限を付与する
foreach($sendOnBehalfAccount in $sendOnBehalfAccountList){
Set-Mailbox $sendOnBehalfAccount.Identity `
-GrantSendOnBehalfTo @{Add=$sendOnBehalfAccount.User}
}問い合わせフォーム
リンク切れのご報告や、記載内容に不備がありましたら、お手数をおかけしますが
以下お問い合わせフォームからご報告をお願い致します。
コマンドの仕様確認やエラー内容の確認、対処方法については、ご契約されているMicrosoftかCSPへお問い合わせください。
※いただきました内容は確認させていただきますが、必ずしも回答をお約束するものではございません。






