In this article, we’ll look at how to set working hours in Exchange Server/Exchange Online user mailboxes using PowerShell.
What Are Working Hours in Exchange and Outlook?
The ability to set work hours in the calendar is a convenient feature available in Exchange mailboxes. It helps you view your colleagues’ availability in Outlook, plan your schedule and appointments, and avoid meetings outside business hours.
How to Change Working Hours in Outlook and Outlook Web Access
Users can set their working hours in their own mailboxes. The default working hours in Outlook are 8:00 AM to 5:00 PM, Monday through Friday.
- In on-premises Exchange (classic Outlook Web Access), working hours can be configured under:
Settings (Gear icon) > Options > Calendar > Calendar Appearance.

Change Work Hours in Outlook Desktop

In classic desktop Outlook client go to File > Options > Calendar > Work Time.
Change Work Hours in Outlook Web App (Microsoft 365)

In Microsoft 365 (modern Outlook on the web), you can configure working hours with the Work Hours and Location (WHL) feature. You can find it under Settings > Calendar > Work hours and location.
In addition to setting flexible work hours for each day, you can set multiple work time slots per day (for shift workers). The user can also specify its location. For example, whether they work remotely or in the office.
Here is the difference between these 2 interfaces:
- Classic OWA (on-premises Exchange) uses basic working hours settings
- Modern Outlook on the web (Microsoft 365) uses the Work Hours and Location (WHL) model. It supports flexible schedules and multiple time slots per day
How to Configure Mailbox Working Hours Using PowerShell
An Exchange administrator can use PowerShell cmdlets to manage work schedules in other users’ mailboxes and shared mailboxes (available in both on-premises Exchange Server and cloud-based service):
- Get-MailboxCalendarConfiguration
- Set-MailboxCalendarConfiguration
Connect to your Exchange Online or Exchange Server tenant using PowerShell.
View Current Mailbox Work Time Settings
Get the current work time and calendar time zone settings in the specific user mailbox:
Get-MailboxCalendarConfiguration meeting_room_1@theitbros.com

By default, all Exchange mailboxes have the following settings:
- WorkDays: WeekDays
- WorkingHoursStartTime: 08:00
- WorkingHoursEndTime: 17:00
- WorkingHoursTimeZone: (this setting depends on mailbox/tenant regional settings, for example, Pacific Standard Time)
Change Time Zone and Work Hours for a User Mailbox
To change the settings, time zone, and working hours in Calendar to match your organization, run the command:
Set-MailboxCalendarConfiguration -Identity meeting_room_1@theitbros.com -WorkingHoursTimeZone "Eastern Standard Time" -WorkingHoursStartTime 09:00:00 -WorkingHoursEndTime 18:00:00
You can get a list of all valid time zone identifiers with the command:
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" |
Select-Object PSChildName
Or on any Windows machine:
[System.TimeZoneInfo]::GetSystemTimeZones() | Select-Object Id, DisplayName
Only working days can be changed (valid values: None, AllDays, Weekdays, WeekEndDays, Sunday, etc.). Multiple values can be specified separated by commas:
Set-MailboxCalendarConfiguration -Identity meeting_room_1@theitbros.com -WorkDays Weekdays,Saturday
The new work time settings affect the legacy working hours config that is used by Exchange and legacy Outlook clients (e.g., Outlook desktop). In Microsoft 365 Outlook on the web, WHL settings may take precedence.
In Microsoft 365, if a user has configured Work Hours and Location (WHL), these settings may override/differ from the values set through PowerShell console.
To change the business hours settings for all mailboxes in bulk, you can use simple PowerShell pipeline. For example, you need to update a number of LA meeting room calendars to match the organization’s schedule.
First, list the current room mailbox settings:
Get-EXOMailbox -ResultSize Unlimited | Where {$_.DisplayName -match โLA-โ -and $_.RecipientTypeDetails -match โRoomMailboxโ}| Get-MailboxCalendarConfiguration | select Identity, WorkDays, WorkingHoursStartTime, WorkingHoursEndTime 
Note. Use Get-EXOMailbox instead of the Get-Mailbox cmdlet for Exchange Online.
How to Check Working Hours for Multiple Mailboxes
Before making bulk changes, you may want to review the current working hours config across multiple mailboxes.
For example, to list work day and working hour settings for all room mailboxes, use the following command:
Get-EXOMailbox -ResultSize Unlimited |
Where-Object {$_.RecipientTypeDetails -eq "RoomMailbox"} |
Get-MailboxCalendarConfiguration |
Select-Object Identity,
WorkDays,
WorkingHoursStartTime,
WorkingHoursEndTime,
WorkingHoursTimeZone
In case you want to review the settings for all user mailboxes, run the command:
Get-EXOMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox |
Get-MailboxCalendarConfiguration |
Select-Object Identity,
WorkDays,
WorkingHoursStartTime,
WorkingHoursEndTime,
WorkingHoursTimeZone
This will allow you to identify mailboxes with inconsistent schedules before applying bulk updates.
Bulk Update Working Hours for Multiple Mailboxes
Important note. In case you are performing bulk updates using Set-MailboxCalendarConfiguration, keep in mind that this modifies only legacy working hours.
In Microsoft 365, these changes do not update or override Work Hours and Location (WHL) settings that were configured by users.
Important. Before performing a bulk update, you should always check the list of mailboxes that match your filter. Note that a broad/incorrect filter can unintentionally modify a large number of mailboxes.
For example, review the affected mailboxes first:
Get-EXOMailbox -ResultSize Unlimited |
Where {$_.DisplayName -match "LA-" -and $_.RecipientTypeDetails -match "RoomMailbox"} |
Select DisplayName,PrimarySmtpAddressAfter confirming that the results are correct, you can run the Set-MailboxCalendarConfiguration command.
To update the time zone and working hours settings in all room resource calendars, run:
Get-EXOMailbox -ResultSize Unlimited | Where {$_.DisplayName -match โLA-โ -and $_.RecipientTypeDetails -match โRoomMailboxโ}| Set-MailboxCalendarConfiguration -WorkingHoursStartTime 08:00:00 -WorkingHoursEndTime 21:59:59 -WorkingHoursTimeZone "Pacific Standard Time" To view legacy working hours settings configured in a mailbox:
powershellGet-MailboxCalendarConfiguration -Identity user@domain.com |
Select-Object Identity, WorkDays, WorkingHoursStartTime,
WorkingHoursEndTime, WorkingHoursTimeZone
Note. WHL settings configured via Outlook on the web are stored separately and may not be fully visible through PowerShell.
Can Work Hours and Location (WHL) Be Managed with PowerShell?
Keep in mind that Microsoft 365 has 2 different systems for managing working hours:
- Legacy working hours (these are used by Exchange and classic Outlook clients)
- Work Hours and Location (WHL) that are used by modern Outlook on the web and Microsoft 365
Using the Set-MailboxCalendarConfiguration cmdlet you can only update legacy working hours settings:
Set-MailboxCalendarConfiguration -Identity user@domain.com `
-WorkingHoursStartTime 09:00:00 `
-WorkingHoursEndTime 18:00:00
But note that these changes may not be reflected in Outlook on the web (in case the user has configured Work Hours and Location or WHL).
Right now, Exchange PowerShell does not provide a cmdlet to directly manage WHL settings. WHL information is stored separately from legacy mailbox calendar settings and you can manage it through the Outlook user interface.
Therefore:
- You can use Set-MailboxCalendarConfiguration for Exchange Server environments, room mailboxes, and bulk admin tasks;
- You can use Outlook on the web when users need flexible schedules, multiple work periods per day, or work location settings (Office/Remote).
Keep in mind that in Microsoft 365 environments, WHL settings typically take precedence over legacy working hours in modern Outlook clients.
When to Use PowerShell vs Outlook UI
We recommend using PowerShell console in the following cases:
- You need to config working hours in bulk (e.g., room mailboxes)
- You are managing on-premises Exchange environments
- You rely on legacy working hours for scheduling logic
We recommend you to use Outlook on the web (WHL) during the following scenarios:
- Users need flexible schedules (for example, multiple time slots per day)
- You have to specify Work location (remote/office)
- You want settings to be reflected in modern Outlook UI
Conclusion
Depending on your environment, you will use 2 separate systems to manage working hours in Exchange and Microsoft 365:
| Setting | Applies to | Managed via |
|---|---|---|
| Legacy working hours | Exchange Server, classic Outlook clients | PowerShell (Set-MailboxCalendarConfiguration) |
| Work Hours and Location (WHL) | Microsoft 365, modern Outlook on the web | Outlook settings or user self-service |
We recommend you to use PowerShell for bulk operations, resource mailboxes, or on-premises environments. In case you are working with individual users with flexible schedules, it’s better to use the Outlook on the web WHL interface. Keep in mind that both systems can coexist, and WHL settings take precedence in modern Outlook clients.
What are working hours in Exchange and Outlook?
Working hours define the time range when users are considered available in Outlook and Exchange calendars. These settings help colleagues schedule meetings within business hours and avoid off-hour invitations.
What are the default working hours in Outlook?
By default, Outlook sets working hours from 8:00 AM to 5:00 PM, Monday through Friday. You can adjust these in Outlook desktop, Outlook Web Access (OWA), or Microsoft 365 Outlook Web App.
How can I change working hours in Outlook desktop?
Open Outlook โ File โ Options โ Calendar โ Work Time, then modify your start and end times, and select the active workdays.
How do I change working hours in Outlook Web Access (OWA)?
In OWA for on-premises Exchange, click the gear icon โ Options โ Calendar โ Calendar Appearance, then set your preferred working days and hours.
How do I change working hours in Outlook Web App (Microsoft 365)?
Go to Settings โ Calendar โ Work hours and location (WHL). You can define flexible work hours for each day, add multiple time slots for shifts, and indicate your location (office or remote).
Can an Exchange administrator change working hours for other users?
Yes. Administrators can use PowerShell cmdlets like Get-MailboxCalendarConfiguration and Set-MailboxCalendarConfiguration to view or modify working hours in user or shared mailboxes.
