Skip to content

Manage Room Mailbox by using PowerShell | Office 365

In the current article, we will review how to use PowerShell commands for managing Room mailbox in Exchange Online environment.

Connect to Exchange Online PowerShell

To be able to run the PowerShell commands specified in the current article, you will need to Connect to Exchange Online PowerShell.

Start Windows PowerShell as administrator and run the cmdlet Connect-ExchangeOnline.

Connect-ExchangeOnline

Resource Mailbox

Resource Mailbox is a special type of Mailbox that uses for the management of Meeting Rooms and Equipment. The Resource Mailbox doesn’t require a license.

Management of Resource Mailbox could implement by using one of the following options:

  1. Self-management: The Resource Mailbox will be configured for automation of accepting meeting requests (or decline meeting request if a previous meeting request already set).
  2. Resource Mailbox Delegate: The delegate is the person that will accept the meeting requests and approve or decline the meeting requests.

The term “resource Mailbox” includes two types of Mailboxes:

  1. Room Mailbox
  2. Equipment Mailbox

There is a small difference between the two types of resource mailbox but the use, and the purpose is quite similar (most of the examples will relate to room Mailbox).

1. Creating Resource Mailbox

Creating Room (Resource) Mailbox

PowerShell command syntax:

New-Mailbox -Name "<Identity>" -Room

PowerShell command example:

New-MailBox -Name "FL ROOM1" -Room

Create new Equipment Mailbox

PowerShell command syntax:

New-Mailbox -Name "<Name>" -Equipment

PowerShell command example:

New-Mailbox -Name "Projector 01" -Equipment

2. Room Mailbox Management

Booking options: Enable Automatic Booking for a Room Mailbox

PowerShell command syntax:

Set-CalendarProcessing "<Identity>" -AutomateProcessing AutoAccept

PowerShell command example:

Set-CalendarProcessing "FL ROOM1" -AutomateProcessing AutoAccept

Booking options: Enable Automatic Booking for all Resource Mailbox (Bulk Mode)

PowerShell command example:

Get-MailBox | Where {$_.ResourceType -eq "Room"} | Set-CalendarProcessing -AutomateProcessing:AutoAccept

Booking options: Assign approving delegate (Room Mailbox Calendar)

PowerShell command syntax:

Set-CalendarProcessing "<Identity>" –ResourceDelegates "<Identity>"

PowerShell command example:

Set-CalendarProcessing "FL ROOM1" –ResourceDelegates "John"

Assign Room Mailbox Manager Full Access permission

PowerShell command syntax:

Add-MailBoxPermission "<Identity>" -User "<Identity>" -AccessRights FullAccess

PowerShell command example:

Add-MailBoxPermission "FL ROOM1" -User "John" -AccessRights FullAccess

Assign Room Mailbox Manager -Assigning Send As permission

PowerShell command syntax:

Add-RecipientPermission "<Identity>" -Trustee "<Identity>" -AccessRights SendAs -Confirm:$False

PowerShell command example:

Add-RecipientPermission "FL ROOM1" -Trustee "John" -AccessRights SendAs -Confirm:$False

Set the default permission of Calendar to: Publishing Editor

PowerShell command syntax:

Set-MailBoxFolderPermission "<Room:\Calendar>" –User default –AccessRights PublishingEditor

PowerShell command example:

Set-MailBoxFolderPermission "FL-ROOM1:\Calendar" –User default –AccessRights PublishingEditor

Allow conflict meetings when using the option of Automatic Booking

PowerShell command syntax:

Set-CalendarProcessing "<Room name>" -AllowConflicts $True

PowerShell command example:

Set-CalendarProcessing "FL-ROOM1" -AllowConflicts $True

3. Display Information about Room Mailbox

Display list of Room Mailboxes

PowerShell command example:

Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox")' | Select Name,Alias

Display list of Equipment Mailboxes

PowerShell command example:

Get-Mailbox -Filter '(RecipientTypeDetails -eq "quipmentMailBox")' | Select Name,Alias

Display Room Mailbox Calendar Settings

PowerShell command syntax:

Get-Mailbox "<Identity>" | Select ResourceType,RejectMessagesFrom,RejectMessagesFromDLMembers,RejectMessagesFromSendersOrMembers,SendModerationNotifications

PowerShell command example:

Get-Mailbox "FL ROOM1" | Select ResourceType,RejectMessagesFrom,RejectMessagesFromDLMembers,RejectMessagesFromSendersOrMembers,SendModerationNotifications

Display Room MailBox: Calendar Processing Settings

PowerShell command syntax:

Get-Mailbox "<Identity>" | Get-CalendarProcessing | FL

PowerShell command example:

Get-Mailbox "FL ROOM1" | Get-CalendarProcessing | FL

Display Room Mailbox Permissions: Moderated By

PowerShell command syntax:

Get-Mailbox <Room Name> | FT -Property ModerationEnabled,ModeratedBy,GrantSendOnBehalfTo –AutoSize

PowerShell command example:

Get-Mailbox "FL ROOM1" | FT -Property ModerationEnabled,ModeratedBy,GrantSendOnBehalfTo –AutoSize

Display Room Mailbox: Calendar Permission

PowerShell command syntax:

Get-MailBoxFolderPermission <Room:\Calendar> | Select FolderName,User,AccessRights

PowerShell command example:

Get-MailBoxFolderPermission "FL-ROOM1:\Calendar" | Select FolderName,User,AccessRights

4. General settings for Resource Mailbox

Set the Room Calendar to show the ‘Organizer’ and ‘Subject’ of the meeting

PowerShell command syntax:

Set-CalendarProcessing <Room Name> -AddOrganizerToSubject $True -DeleteComments $False -DeleteSubject $False

PowerShell command example:

Set-CalendarProcessing "FL ROOM1" -AddOrganizerToSubject $True -DeleteComments $False -DeleteSubject $False

Set the Room Calendar to show ‘limited details’

PowerShell command syntax:

Set-MailBoxFolderPermission -AccessRights LimitedDetails <Room:\Calendar> -User default

PowerShell command example:

Set-MailBoxFolderPermission -AccessRights LimitedDetails "FL ROOM1":\Calendar -User default

Configure Booking Window In Days

PowerShell command syntax:

Get-Mailbox <Room:\Calendar> | Set-CalendarProcessing -BookingWindowInDays

PowerShell command example:

Get-MailBox "FL ROOM1" | Set-CalendarProcessing -BookingWindowInDays 200

Display “Booking Window In Days” Settings of a Room Mailbox

PowerShell command syntax:

Get-Mailbox <Room:\Calendar> | Get-CalendarProcessing | FL Identity,BookingWindowInDays

PowerShell command example:

Get-Mailbox "FL ROOM1" | Get-CalendarProcessing | FL Identity,BookingWindowInDays

Create a new Room list

PowerShell command syntax:

New-DistributionGroup -Name <Group Name> -RoomList

PowerShell command example:

New-DistributionGroup -Name "FL ROOM1" -RoomList

5. Convert Mailbox

Convert Regular Mailbox to Room Mailbox

PowerShell command syntax:

Set-Mailbox <Identity> -Type Room

PowerShell command example:

Set-Mailbox "John" -Type Room

Convert Room Mailbox to Regular Mailbox

PowerShell command syntax:

Get-Mailbox <Room:\Calendar> | Set-Mailbox -Type Regular

PowerShell command example:

Get-Mailbox "FL ROOM1" | Set-Mailbox -Type Regular

6. Delete Room Mailbox

Soft delete Room Mailbox

PowerShell command syntax:

Remove-Mailbox -Identity "<Room Identity>" -Confirm:$false

PowerShell command example:

Remove-Mailbox -Identity "FL ROOM1" -Confirm:$false

Bulk soft delete Room Mailbox

PowerShell command example:

Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox")' -ResultSize Unlimited | Remove-Mailbox -Confirm:$false
o365info Team

o365info Team

This article was written by our team of experienced IT architects, consultants, and engineers.

This Post Has 25 Comments

  1. I have a calendar made for reservation of a virtual showroom. It is only the salesforce, that should be able to book the ‘room’. Or even to see the calendar. How to I permit these 12 people and nobody else to book the ‘room’?

  2. So no-one found a way to add a user to all rooms/resources in one powershell command rather than having to do it individual for every single room/resource in your organisation?

  3. Good overview but missing how to use groups to manage Calendar Permissions on meeting rooms. Default works but PowerShell and Groups are pain in the…..

  4. I am looking at locking down some resource calendars such that only 1 of our 365 domains can book it. Can i do this without maintaining a security group for all users of that particular domain? I want just some rooms to be bookable by one domain, others by everyone. All domains are in our 365 tenant of course.

    1. @Rolldy look into the option for ‘BookInPolicy’ if you are utilizing autoattendant. This will only allow user specified to book the resource.

  5. I am reviewing the output of me current resource rooms to the ones I just created and I am finding that I am not able to add the group while in the GUI, thus the reason I am here collecting PS commands.  However what I am finding is that  I need to change several additional areas:

    ScheduleOnlyDuringWorkingHours: False  to True

    AllBookInPolicy: True to False

    AllRequestinPolicy: False to True

    AddAdditionalResponse: False to True

  6. Hi

    It’s possible to add automatically all resources (salles) in calendar of my entity ?

    I’va 11 resources, and it’s hard to add one at one, them, in user calendar of my compagny (1200 users)

    Thanks

  7. Hi, these are a great collection of management tips.

    Is there a way I can perform this one in bulk for all room resources?

    I can’t find a way to pipe a query for this part of the script ()

    Set-MailBoxFolderPermission -AccessRights LimitedDetails -User default

    Thanks,

    Corey

  8. Hello, Thanks for these tips. Is there a way to define room’s location, phone number… by using power shell ?? Regards

  9. You can rename the room, and the bookings will remain in place in the room calendar, but the new name is NOT reflected in the organizers calendar nor the Attendee calendar. So you must manually warn the organizer that the change has occurred and that they should update the room name in the booking and send the update a to the attendees.

  10. I need to rename a room resource. How can I do that without deleting all existing reservation.

    1. The Room can be renamed and the bookings will stay in place, but the organizers calendar will not update nor will attendee calendars be updated, so you need to warn the organizer that the room is renamed, then he must update the room in his invite and send it to the attndees. Pretty Painful.

  11. Hey, Awesome script & site!

    I am tasked with trying to come up with a report for conf rooms to show the utilisation, can anyone offer some assistance on how to get that information?

  12. i need to add a user to a room mailbox.
    I tried running this code

    Add-RecipientPermission “Room mailbox (4)” -Trustee “Sidey” -AccessRights SendAs -Confirm:$False

    Give me error “Error
    term ‘Add-RecipientPermission’ is not recognized as the name of a cmdlet, function, script file, or operable progra
    heck the spelling of the name, or if a path was included, verify that the path is correct and try again.”

    I am an admin
    Currently using exchange 2010
    Please advise

  13. I am glad I found this Article. I have been looking for a ps command that I can use so that people can see who booked a conference room and the subject.

  14. Don’t you have to set the sendrecive quota to 250mb on the room mailbox to ensure you don’t go over the free service limit restriction?

  15. Don’t you have to set the send and receive quota to 250MB because that is a service limit to have a free conference room right?

  16. As far as I know , the issue of “converting an existing Distribution Group to a security group” is not enabled in office 365 ( Exchange online)The only option to set Distribution Group also as a “Security Group” is when you create a new Distribution Group. To set a Distribution Group also as a security group you can use one of the following options: 1. Exchange online Web Interface when you create a new Distribution Group chooses the check box: “Make this group a security group”2. PowerShell For example: New-DistributionGroup -Name “Office Users” -Type “Security”If you want to be sure that this option is not enabled, you can try to use the following PowerShell commandSet-DistributionGroup -name “Office Users” -Type “Security”You will get the following error “A parameter cannot be found that matches parameter name ‘Type’”

  17. We create a Security Group and assign that group to be the resource Delegate, this allows the group owner to select the delegates. The group has “FullAccess” to the resource; the group has “Reviewer” access to the /Calendar:
    Add-MailboxPermission -Identity Resource_Name `
    -AccessRights FullAccess `
    -User Security_Group

    Add-MailboxFolderPermission -Identity Resource_Name:Calendar `
    -AccessRights Reviewer `
    -User Security_Group

    The use of security groups gives greater flexibility for resource management. For some resources, our default of “Reviewer” may be insufficient; the delegates may change this via Outlook (or contact us).

Leave a Reply

Your email address will not be published. Required fields are marked *