今回はライセンスを使わずに利用できるメールボックスである共有メールボックスについて、Powershellのコマンドレットで一括で作成や削除などご紹介していきたいと思います。
以下の記事をもとにExchangeOnlineに接続してから実行してください。
共有メールボックスを一括で作成する手順について
Windoes PowerShell コマンドレットにて複数の共有メールボックスを一括で作成を行うには New-Mailbox コマンドレットを使用し共有メールボックスの作成後、Add-MailboxPermission コマンドにてメンバーの登録、Add-RecipientPermission コマンドにて所有者として送信権限の付与を行う手順となります。
また、アドレス帳非表示、送信済みアイテムにコピーを残す設定は Set-Mailbox コマンドレットを使用します。
1. 作成を行う共有メールボックスの CSV ファイルを作成する
※ 一括で登録する共有メールボックスの一覧を CSV ファイルにて作成します。
※ メモ帳にて、新規作成する共有メールボックスの情報を入力します。
※ 1 行目は固定で、設定を行うユーザーやアドレスを 2 行目以降に記載します。
< CSV ファイルの作成例 >
Name,DisplayName,Alias,PrimarySmtpAddress,Hidden,CopyForSentAs
info001,共有001,info001,info@contoso.com,1,1
info002,共有002,info002,info@fabrikam.com,0,1
info003,共有003,info003,info@contoso.jp,1,0
< 各パラメータについて >
Name : 共有メールボックスの名前
DisplayName : 共有メールボックスの表示名
Alias : 共有メールボックスのエイリアス名 (メールアドレスの @ より前)
PrimarySmtpAddress : 共有メールボックスのメールアドレス
Hidden : アドレス帳から非表示にする場合は "1",表示する場合は "0"
CopyForSentAs : 送信済みアイテムにコピーを残す場合は "1" ,残さない場合は "0"
※"1" が True,"0" が False を示しております。
※ 文字コードは [UTF-8] を選択し、保存時の拡張子を CSV 形式に指定し、任意のフォルダに保存します。
< UTF-8 での保存の手順 >
- CSVファイルを右クリックし、[プログラムから開く] - [メモ帳] の順にクリックします
- 開いたメモ帳で [ファイル] - [名前を付けて保存] の順にクリックします。
- ファイルの種類で「すべてのファイル」を選択します。
- 文字コードで「UTF-8」を選択します。
- [保存]をクリックします。
2. 作成した CSV ファイルを用い、共有メールボックスの一括作成と設定変更をおこなう
[構文]
Import-CSV <保存先のパス\ファイル名> | foreach { New-Mailbox -Name $_.Name -DisplayName $_.DisplayName -Alias $_.Alias -PrimarySmtpAddress $_.PrimarySmtpAddress -Shared }
[実行例]
Import-Csv C:\Temp\Sharedlist.csv |foreach { New-Mailbox -Name $_.Name -DisplayName $_.DisplayName -Alias $_.Alias -PrimarySmtpAddress $_.PrimarySmtpAddress -Shared }
※実行例は Cドライブ直下の Temp フォルダー内に保存した "Sharedlist.csv" ファイルを指定しております。
上記の設定が反映後、以下のコマンドレットを実行します。
[構文]
Import-CSV <保存先のパス\ファイル名> | foreach { Set-Mailbox -Identity $_.Name -HiddenFromAddressListsEnabled ($_.Hidden -eq "1") -MessageCopyForSentAsEnabled ($_.CopyForSentAs -eq "1")}
[実行例]
Import-Csv C:\Temp\Sharedlist.csv | foreach { Set-Mailbox -Identity $_.Name -HiddenFromAddressListsEnabled ($_.Hidden -eq "1") -MessageCopyForSentAsEnabled ($_.CopyForSentAs -eq "1")}
共有メールボックスの権限を一括で付与する手順について
1. 権限付与を行う対象ユーザーの CSV ファイルを作成する
※ 一括で登録する共有メールボックスのアクセス権一覧を CSV ファイルにて作成します。
※ メモ帳にて、設定するアクセス権の情報を入力します。
※ 1 行目は固定で、設定を行うユーザーや付与する権限を 2 行目以降に記載します。
< CSV ファイルの作成例 >
SharedMailbox,User
info@contoso.com,User001@contoso.com
info@contoso.com,User002@contoso.com
info@contoso.com,User003@contoso.com
info@fabrikam.com,User001@contoso.com
info@fabrikam.com,User002@contoso.com
info@fabrikam.com,User003@contoso.com
info@contoso.jp,User001@contoso.com
info@contoso.jp,User002@contoso.com
info@contoso.jp,User003@contoso.com
< 各パラメータについて >
SharedMailbox : 共有メールボックスのメールアドレス
User : 権限を付与するユーザーのメールアドレス
2. 作成した CSV ファイルを用い、共有メールボックスの権限付与を行う
[構文]
Import-CSV <保存先のパス\ファイル名> | foreach { Add-MailboxPermission -Identity $_.SharedMailbox -User $_.User -AccessRights FullAccess -Confirm: $False;Add-RecipientPermission -Identity $_.SharedMailbox -Trustee $_.User -AccessRights SendAs -Confirm: $False}
[実行例]
Import-CSV C:\Temp\Accesslist.csv | Foreach { Add-MailboxPermission -Identity $_.SharedMailbox -User $_.User -AccessRights FullAccess -Confirm: $False ;Add-RecipientPermission -Identity $_.SharedMailbox -Trustee $_.User -AccessRights SendAs -Confirm: $False}
※実行例は Cドライブ直下の Temp フォルダー内に保存した "Accesslist.csv" ファイルを指定しております。
■権限を削除する手順
CSV ファイルに記載した共有メールボックスの [フルアクセス許可] と [メールボックス所有者として送信する] 権限を持つユーザーをすべて削除するコマンドレットにつきましては、Remove-RecipientPermission と Remove-MailboxPermission をご利用いただくことで可能です。
以下に手順をご案内いたします。
1. メンバーの削除をおこなう共有メールボックスの CSV ファイルを作成する
※ 共有メールボックスとユーザーの一覧を CSV ファイルにて作成します。
※ 1 行目は固定で、設定を行う共有メールボックスとユーザーのアドレスを 2 行目以降に記載します。
[CSV ファイル作成例]
SharedMailbox,User
info@contoso.com,User001@contoso.com
info@contoso.com,User002@contoso.com
info@contoso.com,User003@contoso.com
info@fabrikam.com,User001@contoso.com
info@fabrikam.com,User002@contoso.com
info@fabrikam.com,User003@contoso.com
info@contoso.jp,User001@contoso.com
info@contoso.jp,User002@contoso.com
info@contoso.jp,User003@contoso.com
< 各パラメータについて >
SharedMailbox : 共有メールボックスのメールアドレス
User : 権限を削除するユーザーのメールアドレス
2. コマンドレットを実行します
[構文]
Import-CSV <保存先のパス\ファイル名> | foreach { Remove-MailboxPermission -Identity $_.SharedMailbox -User $_.User -AccessRights FullAccess ;Remove-RecipientPermission -Identity $_.SharedMailbox -Trustee $_.User -AccessRights SendAs -Confirm: $False}
[実行例]
Import-CSV C:\Temp\Accesslist.csv | Foreach { Remove-MailboxPermission -Identity $_.SharedMailbox -User $_.User -AccessRights FullAccess ;Remove-RecipientPermission -Identity $_.SharedMailbox -Trustee $_.User -AccessRights SendAs -Confirm: $False}
共有メールボックスのフルアクセス権限を付与されたユーザーを抽出するコマンドレット
<構文>
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails Shared | Get-MailboxPermission | Where {$_.User -Notlike "*\*"} | Where {$_.AccessRights -like "FullAccess"} | Select Identity,User,AccessRights | Export-Csv -Encoding UTF8 -NoTypeInformation -Path "<保存先のパス\ファイル名.csv>"
<実行例>
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails Shared | Get-MailboxPermission | Where {$_.User -Notlike "*\*"} | Where {$_.AccessRights -like "FullAccess"} | Select Identity,User,AccessRights | Export-Csv -Encoding UTF8 -NoTypeInformation -Path "C:\temp\Accesslist.csv"
<実行結果>
Identity : 共有メールボックス名
User : 権限が付与されているユーザー
AccessRights : 権限 (フルアクセス権限の場合は [FullAccess] となります)
共有メールボックスの所有者送信権限を付与されたユーザーを抽出するコマンドレット
<構文>
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails Sharedmailbox | Get-RecipientPermission | Where {$_.Trustee -ne "NT AUTHORITY\SELF"} | Where {$_.AccessRights -like "*SendAs*"} | Select Identity,Trustee,AccessRights | Export-Csv -Encoding Utf8 -NoTypeInformation -Path "<保存先のパス\ファイル名.csv>"
<実行例>
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails Sharedmailbox | Get-RecipientPermission | Where {$_.Trustee -ne "NT AUTHORITY\SELF"} | Where {$_.AccessRights -like "*SendAs*"} | Select Identity,Trustee,AccessRights | Export-Csv -Encoding Utf8 -NoTypeInformation -Path "C:\temp\SendAslist.csv"
<実行結果>
Identity : 共有メールボックス名
Trustee : 権限が付与されているユーザー
AccessRights : 権限 (メールボックス所有者としての送信の場合は [SendAs] となります)
共有メールボックスの削除について
1. CSV ファイルを作成します。
<CSV ファイルの作成例>
Name
Shared01
Shared02
Shared03
2. 作成した CSV ファイルを利用して、共有メールボックスを削除します。
<構文>
Import-CSV "保存先のパス\ファイル名.csv" | Foreach-Object {Remove-Mailbox -Identity $_.Name -Confirm: $False}
<実行例>
Import-CSV "C:\Temp\Remove_Shared.csv" | Foreach-Object {Remove-Mailbox -Identity $_.Name -Confirm: $False}