痛いところは煙に巻く

製造業のしがない社内SEが日記代わりにいろいろ書く

Hello,World

Üben Sie es nur recht fleißig, so wird es schon gehen

【Microsoft365】Get-MailboxFolderPermissionで予定表の権限情報を取得してCSVに一覧出力する

おはこんばんにちは、ビショップです。

最近Microsoft365をいじらされてます。
PowerShellを使わないと管理できないものもあり、非常に面倒です。

コマンドを作って、適宜実行できるようにps1にして保存しています。
備忘録的にコマンドの一部を記録しようと思います。

前回はGet-DistributionGroupMemberコマンドを使って、グループに所属しているメンバー情報を出力する方法を紹介しました。
今日は、Get-MailboxFolderPermissionコマンドを使って、予定表の権限情報を出力したいと思います。
会議室を設定する場合、中には特定の人した予定表を登録できないとか、制限することがありますよね。その権限設定の状態を確認するにはやっぱり一覧が欲しいときがあります。なかなか使う頻度は低いかもしれないですが、あると便利なコマンドだと思っています。

通常、Get-MailboxFolderPermissionコマンドでは、ユニークなグループのプライマリSMTPアドレスを指定しないといけません。なので、例の如くforeachステートメントを使用して、Get-Mailboxで取得した数だけ検索を実行して、CSVにまとめて出力する方法を取ります。検索するメールボックスは会議室だけにしたいので、ResouceTypeにフィルタをかけておきます。

# 実行ファイルのディレクトリ
$CurrentDir = Split-Path $MyInvocation.MyCommand.path
# 出力先ディレクトリ
$ExpDir = $CurrentDir + "\export_file\"
# 検索対象

# ディレクトリの存在チェック
If (!(Test-Path $ExpDir)) {
	# 存在しない場合、ディレクトリ作成
	New-Item $ExpDir -ItemType Directory
}

# パーミッション一覧
$GetMB = Get-Mailbox -Filter "ResourceType -eq 'Room'" | Select PrimarySmtpAddress
$GetPL = foreach ($i in $GetMB.PrimarySmtpAddress ){ Get-MailboxFolderPermission -Identity $i":\calendar" | Select @{n="SmtpAddress";e={$i}},Identity,FolderName, User, AccessRights }
$GetPL | Export-Csv -Encoding UTF8 -Path $ExpDir"Permission.csv"

今回もSelect句をつけて、必要そうな情報に絞って抽出してCSVに吐き出しています。必要なものを追加したり、不要なものは削除したりしてください。
対象のメールボックスの件数によってかなり時間がかかります。必要に応じてIdentityなどで絞りこんでおきましょう

Get-MailboxFolderPermissionのIdentityパラメータで指定するのは、PrimarySmtpAddress+”:\calendar”とする必要があります。コロンを忘れがちなので注意が必要です。calendar以外でもメールボックスのフォルダを指定することで指定したユーザのメールボックス内の各フォルダ毎にアクセス権をチェックすることができます。

スポンサーリンク