どうもミツシマです。
前回「(Exchange Online)共有メールボックスを一括作成するPowershellコマンドを検証してみた」の続きになります。
前回は共有メールボックスを一括で作成するPowershellコマンドを検証しましたが、今回は作成した共有メールボックスに対して「フルアクセス許可の設定」と「メールボックス所有者として送信する許可設定」を設定する検証となります。
検証環境は以下の通り
PC:Windows10
今回検証後に気付いたのですが、共有メールボックスのメールアドレスからメールを送信すると、初期設定だと送信した人のメールボックスの「送信済みアイテム」にメールが格納されてしまいます。
どういうことかというと、「山田太郎」というユーザーで共有メールボックスのアドレス「info@~」のようなアドレスを使用してメール送信すると、「info@~」のメールボックスの「送信済みアイテム」ではなく、「山田太郎」の「送信済みアイテム」に格納されてしまいます。
それだと少し不便だと感じたので、急遽この設定も追加しています。
※受信は当たり前ですが、共有メールアドレス宛のものは共有メールボックスに格納されます。
そして出来たスクリプトがこちら↓↓↓
「ShareMailBoxMember」配下に共有メールボックスの「表示名」をファイル名としたテキストファイルを準備します。
そのテキストファイルの中に、共有メールボックスを使用させたいユーザーリストを記載します。
※ユーザーリストの中に「メールが有効なセキュリティ」グループを追加することも可能です。
こうすれば、1名ずつユーザーを追加しなくとも良いかもしれませんね。
こんな感じです↓↓↓



それぞれ準備が出来たらスクリプトを実行する。
実行すると「SetFullAccess-ShareMailBoxMember.log」が出力されます。

ではここからはスクリプトの解説をします。
スクリプトの流れとしては以下の通りです。
こんな感じです。
注意点としては、準備するテキストファイル名と中身はすべて「表示名」で構成されている所だ。
その為このブログを書いていて思ったのですが、同姓同名がいたらどうしよう。。。^^;
その場合は、テキストファイルの中身を「表示名」ではなく「メールアドレス」に変えれば大丈夫だと思われます。(未検証)
一応「 Add-RecipientPermission」コマンドのヘルプ例を見ると「-User」パラメータに「メールアドレス(ユーザープリンシパル名)」を使用している例があるので多分行けるはず!!
※もしかしたら「メールアドレス(ユーザープリンシパル名)」の方が良いかもですね。
この辺りは時間があれば再検証してみたいと思います。
とりあえず今回の検証はここまで。
次回はリソースメールボックスについて検証してみたいと思います(^^)
前回「(Exchange Online)共有メールボックスを一括作成するPowershellコマンドを検証してみた」の続きになります。
前回は共有メールボックスを一括で作成するPowershellコマンドを検証しましたが、今回は作成した共有メールボックスに対して「フルアクセス許可の設定」と「メールボックス所有者として送信する許可設定」を設定する検証となります。
検証環境は以下の通り
PC:Windows10
〜検証〜
今回使用する基本的なコマンドは以下の通り今回検証後に気付いたのですが、共有メールボックスのメールアドレスからメールを送信すると、初期設定だと送信した人のメールボックスの「送信済みアイテム」にメールが格納されてしまいます。
どういうことかというと、「山田太郎」というユーザーで共有メールボックスのアドレス「info@~」のようなアドレスを使用してメール送信すると、「info@~」のメールボックスの「送信済みアイテム」ではなく、「山田太郎」の「送信済みアイテム」に格納されてしまいます。
それだと少し不便だと感じたので、急遽この設定も追加しています。
※受信は当たり前ですが、共有メールアドレス宛のものは共有メールボックスに格納されます。
そして出来たスクリプトがこちら↓↓↓
〜SetFullAccess-ShareMailBox.ps1〜
#環境変数の設定
$CurrentFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
$TxtFolderPath = $CurrentFolder + "\ShareMailBoxMember\"
$OutputLogFilePath1 = $CurrentFolder + "\SetFullAccess-ShareMailBoxMember.log"
#「ShareMailBoxMember」フォルダーがあるかどうかをチェックし、なければエラー表示で終了
If(-Not(Test-Path $TxtFolderPath)){
Write-Output "「ShareMailBoxMember」が同じフォルダにありません。処理を中断します。"
pause
Exit
}
###事前接続準備
#認証情報取得
$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
#「ShareMailBoxMember」配下のファイル一覧出力
$AllTxtInfo = Get-ChildItem $TxtFolderPath
#全メールボックスを取得
$AllMailBox = Get-Mailbox
foreach($TxtInfo in $AllTxtInfo){
#ファイル名(共有メールボックス名)を取得する
$ShareMailBoxName = [String]$TxtInfo.BaseName
#「フルアクセス許可」を追加する対象「共有メールボックス」を取得
$ShareMailBox = $AllMailBox | Where-Object {$_.DisplayName -eq $ShareMailBoxName}
#ファイルを読み込む
$AllTxtContent = (Get-Content -Path $TxtInfo.PSPath) -as [string[]]
#ファイルを1行ずつ読みこんでユーザーをフルアクセス許可に追加する
foreach($TxtContent in $AllTxtContent){
#出力確認
[String]$strMessage = "共有メールボックス「" + $ShareMailBox.DisplayName + "」のフルアクセス許可をユーザー「" + $TxtContent + "」に付与します."
Write-Output $strMessage >> $OutputLogFilePath1
#フルアクセス許可追加
Add-MailboxPermission -Identity $ShareMailBox.DisplayName -User $TxtContent -AccessRights FullAccess -InheritanceType All
#「メールボックス所有者として送信する」権利を許可
Add-RecipientPermission -Identity $ShareMailBox.DisplayName -Trustee $TxtContent -AccessRights SendAs -Confirm:$false
}
#アクセス許可確認の為のログ出力
Write-Output `r`n >> $OutputLogFilePath1
Write-Output "${ShareMailBoxName}のアクセス許可一覧を出力します." >> $OutputLogFilePath1
Get-MailboxPermission -Identity $ShareMailBox.DisplayName | Select-Object Identity,User,AccessRights | Sort-Object User >> $OutputLogFilePath1
Write-Output "${ShareMailBoxName}の「メールボックス所有者として送信」出来るユーザー一覧を出力します." >> $OutputLogFilePath1
Get-RecipientPermission -Identity $ShareMailBox.DisplayName | Sort-Object Trustee >> $OutputLogFilePath1
#個別で送信したメールについて、共有メールボックスの「送信済みアイテム」に残す設定
Write-Output "${ShareMailBoxName}の「送信済みアイテム」に残す設定かどうか確認します(True=残す)." >> $OutputLogFilePath1
Set-Mailbox -Identity $ShareMailBox.DisplayName -MessageCopyForSentAsEnabled $True
Get-Mailbox -Identity $ShareMailBox.DisplayName | Select-Object Name,MessageCopyForSentAsEnabled | Sort-Object MessageCopyForSentAsEnabled >> $OutputLogFilePath1
}
#セッション切断
Remove-PSSession $Session
Write-Host "処理が完了しました."
pause
〜準備するテキストファイル例〜
test 01
test 02
test 03
test 04
test 05
test 06
全社員
〜解説〜
まず準備するものは「SetFullAccess-ShareMailBox.ps1」と「ShareMailBoxMember」フォルダです。「ShareMailBoxMember」配下に共有メールボックスの「表示名」をファイル名としたテキストファイルを準備します。
そのテキストファイルの中に、共有メールボックスを使用させたいユーザーリストを記載します。
※ユーザーリストの中に「メールが有効なセキュリティ」グループを追加することも可能です。
こうすれば、1名ずつユーザーを追加しなくとも良いかもしれませんね。
こんな感じです↓↓↓



それぞれ準備が出来たらスクリプトを実行する。
実行すると「SetFullAccess-ShareMailBoxMember.log」が出力されます。

ではここからはスクリプトの解説をします。
スクリプトの流れとしては以下の通りです。
- 「ShareMailBoxMember」フォルダの有無を確認し、なければエラーで終了します
- ExchangeOnlineに接続
- 「ShareMailBoxMember」配下のファイル一覧を取得
- 全メールボックスを取得
- 「ShareMailBoxMember」配下のファイルを一つずつ読み込み、ファイル名から対象の共有メールボックスを取得
- ファイルの中身から「フルアクセス許可」と「メールボックス所有者として送信する」に追加許可するユーザーを取り出して各種設定
- 共有メールボックスの「送信済みアイテム」に送信したメールを残す設定を付与
- ログ出力
こんな感じです。
注意点としては、準備するテキストファイル名と中身はすべて「表示名」で構成されている所だ。
その為このブログを書いていて思ったのですが、同姓同名がいたらどうしよう。。。^^;
その場合は、テキストファイルの中身を「表示名」ではなく「メールアドレス」に変えれば大丈夫だと思われます。(未検証)
一応「 Add-RecipientPermission」コマンドのヘルプ例を見ると「-User」パラメータに「メールアドレス(ユーザープリンシパル名)」を使用している例があるので多分行けるはず!!
※もしかしたら「メールアドレス(ユーザープリンシパル名)」の方が良いかもですね。
この辺りは時間があれば再検証してみたいと思います。
とりあえず今回の検証はここまで。
次回はリソースメールボックスについて検証してみたいと思います(^^)
スポンサードリンク
コメント