skip to Main 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.

PowerShell | Help & additional information

Running PowerShell commands in Office 365 based environment
To be able to run the PowerShell commands specified in the current article, you will need to create a remote PowerShell with Azure Active Directory or Exchange Online. In case that you need help with the process of creating a Remote PowerShell session, you can use the links on the bottom of the Article.

Resource Mailbox is a special type or a 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 – Room Mailbox and Equipment Mailbox.

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

A little confession – I must admit that it wasn’t easy to give up the strong need for naming these articles: Get a Room!
(But I know that this is a “serious” WebSite and, for this reason, I use a formal name).


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


Getting started with Office 365 PowerShell

PowerShell Naming Conventions & general information
Get more information about the Naming Conventions that are used in the PowerShell articles – Help and additional information – o365info.com PowerShell articles
Creating a remote PowerShell session to Exchange Online 
To get more information about the required remote PowerShell commands that you need to use for connecting to Exchange Online, read the following article:
Connect to Exchange Online by using Remote PowerShell
Creating a remote PowerShell session to Azure Active Directory
To get more information about the required software component + the remote PowerShell commands that you need to use for connecting Azure Active Directory, read the following article: Part 2: Connect to Office 365 by using Remote PowerShell
Basic introduction to PowerShell in Office 365 based environment
If you are new in the PowerShell world, you can read more information about how to start working with PowerShell in Office 365 based environment in the following article series:  Getting started with Office 365 PowerShell – Part 1, Part 2, Part 3.
Running and using o365info PowerShell scripts
In case that you need more information about how to use the o365info PowerShell scripts that I add to the PowerShell articles, you can read the article – How to run and use o365info PowerShell menu script


The o365info Team

The 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 (<Room:\Calendar> )

    Set-MailBoxFolderPermission -AccessRights LimitedDetails  <Room:\Calendar> -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 *