1. Check Calendar permission for a specific mailbox:
Get-MailboxFolderPermission -Identity Test@cu1.com:\Calendar | FL
If you want to check whether a specific user has any special Calendar permission to a specified Calendar, we can run:
Get-MailboxFolderPermission -Identity Test@cu1.com:\Calendar -User Test2
2. Add Calendar permission for a specific user to a mailbox:
Add-MailboxFolderPermission -Identity Test@cu1.com:\Calendar -User Test1 -AccessRights Editor
3. A specific group or user can have special permission (Reviewer) to all users’ Calendar:
$all=Get-Mailbox -ResultSize Unlimited
$all | ForEach {Add-MailboxFolderPermission -Identity “$($_.alias):\Calendar” -User Group1 -AccessRights "Reviewer"}
This example assigns permissions for Test to access all room mailboxes' Calendar folder and applies the Editor role to his access of those folders:
$all=Get-Mailbox -RecipientTypeDetails RoomMailbox
$all | ForEach {Add-MailboxFolderPermission -Identity “$($_.alias):\Calendar” -User Test -AccessRights "Editor"}
4. Change Calendar permission for a user who has had related permission to a mailbox Calendar:
Set-MailboxFolderPermission -Identity Test@cu1.com:\Calendar -User Test1 -AccessRights Reviewer
5. Change all users’ Default Calendar permission in Exchange:
$all=Get-Mailbox -RecipientTypeDetails UserMailbox
$all | ForEach {Set-MailboxFolderPermission -Identity “$($_.alias):\Calendar” -User default-AccessRights "None"}
6. List Calendar permission for all user mailboxes in Exchange:
ForEach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)) {Get-MailboxFolderPermission -Identity "$($Mailbox.Name):\Calendar" | Select @{n='Calendar';e={$Mailbox.Name}},User,AccessRights}
7. Export the Calendar permissions for all mailboxes in Exchange:
To Txt file:
$Results = ForEach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)) {Get-MailboxFolderPermission -Identity "$($Mailbox.Name):\Calendar" | Select @{n='Calendar';e={$Mailbox.Name}},User,AccessRights}
To CSV file:
$Results | out-file -filepath C:\CalendarPermission.txt
$Results = ForEach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)) { Get-MailboxFolderPermission -Identity "$($Mailbox.Name):\Calendar" | Select @{n='Mailbox';e={$Mailbox.Name}},User,@{Name='AccessRights';Expression={[string]::join(";",
($_.AccessRights))}}}
$Results | Export-Csv C:\permission8.csv
References:
https://social.technet.microsoft.com/Forums/en-US/80d6de56-0820-453c-8d3f-5982631aaf20/adding-editor-permissions-to-a-ad-security-group?forum=exchange2
https://social.technet.microsoft.com/Forums/en-US/00ebf670-15a8-4b49-9b6c-fe576e1d0161/changing-calendar-permissions-for-all-users-in-powershell?forum=
https://social.technet.microsoft.com/Forums/exchange/en-US/af85511b-25eb-48e2-8313-f97201b99dc1/script-to-pull-calendar-permission-of-all-users-in-domain?forum=exchange2010
Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.