Exchange Online: No Native Resource Mailbox Utilization Report—How to Audit

Microsoft’s Exchange Team said in May 2026 that Exchange Online still has no native report showing which room, equipment, or workspace resource mailboxes are actively used, leaving administrators to infer utilization from calendar data through PowerShell, Microsoft Graph, or mailbox folder statistics. That sounds like a niche administrative inconvenience until you remember how many physical-world decisions now hang off Microsoft 365 data. Office footprints, hybrid-work policies, room panels, facilities budgets, and access governance all depend on knowing whether “Conf Room 3B” is a living business asset or a forgotten object with a calendar. The real story is not that Microsoft forgot to add another chart; it is that Exchange Online’s operational truth still lives in low-level signals administrators must assemble themselves.

Dashboard showing room utilization audit for Floor 3 West Wing with Microsoft 365 calendar and utilization insights.Microsoft Leaves the Room Report to the People Who Need It Most​

Resource mailboxes are deceptively simple objects. A room mailbox represents a conference room, an equipment mailbox might represent a projector or shared device, and a workspace mailbox can represent bookable desks or flexible seating areas. In practice, these objects sit at the junction of Exchange, Teams, Outlook, Entra ID, facilities management, and corporate real estate.
That is why the lack of a first-class utilization report feels oddly out of step with the rest of Microsoft 365. Admin centers are full of usage dashboards for mail, Teams, SharePoint, OneDrive, and identity activity, but the humble resource mailbox remains something of a blind spot. If an organization wants to know which rooms are actually being booked, it must query the calendars directly.
Microsoft’s guidance effectively acknowledges this reality. There is no magic “show me active resource mailboxes” button. Instead, administrators get three practical routes: query calendar views with Exchange Online PowerShell, query events with Microsoft Graph, or inspect calendar folder statistics for a cruder signal.
That is not necessarily bad engineering. Resource usage is context-dependent, and a “used” room means different things to different organizations. But it does mean the burden of interpretation falls on administrators, who must decide whether they are measuring booking count, occupied hours, organizer patterns, future reservations, historical activity, or simple evidence that anything exists on the calendar at all.

The Calendar Is the Utilization Database Now​

The cleanest short answer is that a resource mailbox is “active” if its calendar contains relevant events inside the window the organization cares about. That window matters. A boardroom with no bookings in the last six months may be obsolete, but a training room booked only quarterly may still be important.
Microsoft’s first suggested path is Get-CalendarViewDiagnostics, an Exchange Online PowerShell cmdlet that returns meetings from a mailbox calendar over a specified time range. The example Microsoft gives is a symmetrical one: six months back and six months forward. That is a useful starting point because it catches both stale resources and future-facing rooms that may not have recent history but are clearly still in circulation.
The appeal of this approach is speed and scope. It targets the calendar rather than rummaging through every mailbox folder, and it fits naturally into Exchange Online PowerShell workflows. If an administrator already knows how to use Get-Mailbox to pull every room mailbox, the next step is straightforward: pipe those mailboxes into Get-CalendarViewDiagnostics and count the results.
The limitation is equally important. The meeting subject is not exposed as a property in the way many admins would want for a human-readable report. For a utilization audit, that may not matter; for a facilities review or executive report, it probably does. Counting events is enough to separate “dead” from “alive,” but it is not enough to explain how the resource is being used.
This is where the philosophical split begins. Exchange Online PowerShell is excellent when the question is administrative: which objects, which types, which recipients, which calendars contain items. Microsoft Graph is stronger when the question becomes analytical: who organized the booking, when did it begin, how long did it last, what metadata should be exported, and how might this data feed a broader reporting pipeline.

PowerShell Gives Administrators the Fastest First Pass​

For many tenants, the sensible first pass is not Graph. It is Exchange Online PowerShell, because Exchange already knows what a room mailbox is. Get-Mailbox -RecipientTypeDetails RoomMailbox can build the population, and Get-CalendarViewDiagnostics can test each mailbox for meetings inside the chosen window.
That distinction matters. Microsoft Graph can query calendar views, but Graph does not always map as cleanly to the administrative categories Exchange admins use every day. If the job is “show me all room mailboxes that have at least one meeting in the last 180 days,” Exchange PowerShell is the shorter path.
A practical administrator would probably build a report that records the resource display name, primary SMTP address, mailbox type, event count, first event date, last event date, and perhaps whether future bookings exist. Even without subjects, that report is enough to identify obvious candidates for cleanup. A mailbox with zero meetings for a year and no future bookings belongs on a review list.
But this approach should not be mistaken for a full utilization model. It tells you that the calendar has items; it does not tell you whether people actually attended, whether the room was a no-show hotspot, whether meetings were cancelled but left behind artifacts, or whether recurring bookings are squatting on valuable space. Exchange calendar data is strong evidence of intent, not guaranteed evidence of physical occupancy.
Still, for Exchange administrators asked to produce an answer by Friday, intent is often enough. The fastest answer is rarely the perfect answer, and Microsoft’s recommendation reflects a familiar truth in operations: start with the least invasive query that can resolve the business question.

Graph Turns a Mailbox Audit Into a Data Product​

Microsoft’s second option, Microsoft Graph, is the more flexible and more sensitive route. The calendarView endpoint can return calendar events for a defined start and end time, and Graph PowerShell exposes that through commands such as Get-MgUserCalendarView. Unlike Get-CalendarViewDiagnostics, Graph can expose properties administrators often want in a report, including organizer, subject, start time, and end time.
That extra detail changes the nature of the work. With Graph, an admin can move beyond “does this room have bookings?” and toward “how heavily is this room used, by whom, and during which parts of the week?” That is the difference between cleanup and planning. One produces a stale-object report; the other informs whether a company needs fewer conference rooms, more small huddle spaces, or better booking rules.
The tradeoff is setup complexity. Graph access requires appropriate permissions, usually through an Entra ID app registration for unattended scripts or delegated permissions for user-driven access. Application permissions are powerful because they let a script run non-interactively, but they can also be dangerously broad if granted across every mailbox in the tenant.
Microsoft’s guidance points administrators toward a more controlled model: use Exchange Online Role Based Access Control for Applications to scope what an app can access. That matters because “Calendars.Read for the tenant” is a large permission, especially when calendar subjects may contain customer names, legal matters, merger discussions, medical information, HR events, or security incidents. A room mailbox audit should not become a quiet expansion of application access to every executive calendar.
Graph is therefore the better answer when the organization has the maturity to handle it. If the output needs to feed Power BI, a facilities dashboard, a chargeback model, or a recurring operational report, Graph is the platform-shaped solution. If the goal is a quick inventory check, it may be overkill.

Permissions Are the Hidden Cost of Better Reporting​

The most important administrative detail in Microsoft’s guidance is not the syntax. It is the warning implied by the permissions model. Once an organization chooses Graph for calendar reporting, it has entered the world of app registrations, delegated versus application permissions, certificates or client secrets, consent, and scoped access.
Delegated permissions mean the app acts as a signed-in user and can access what that user is allowed to access. That is often easier to reason about for interactive work, but it is not ideal for scheduled reporting. Application permissions are designed for non-interactive automation, but they shift the risk from “what can this user see?” to “what can this app see?”
That is why scoping matters. If the app only needs resource mailboxes, it should only be able to read resource mailboxes. Microsoft’s RBAC for Applications model is the right direction because it lets Exchange Online define a management scope, such as a recipient filter for resource mailboxes, and assign application roles against that scope.
The operational catch is that admins must avoid accidentally combining scoped and unscoped grants. If an application retains broad Graph permissions in Entra ID while also receiving scoped Exchange RBAC permissions, the practical result may still be broader access than intended. This is the kind of configuration detail that turns a harmless reporting script into an audit finding.
The best pattern is boring but defensible: create a dedicated app registration for resource mailbox reporting, use certificate-based authentication where practical, scope access to the smallest mailbox set possible, document the management scope, and review the app periodically. Calendar reporting is useful; tenant-wide calendar visibility should never be casual.

Folder Statistics Offer a Blunt Instrument That Still Has a Place​

Microsoft’s third option, Get-MailboxFolderStatistics, is the administrative equivalent of checking whether the lights are on. With -FolderScope Calendar and -IncludeOldestAndNewestItems, an admin can inspect the calendar folder and see signals such as item counts and oldest or newest items.
This is not rich utilization reporting. It will not tell the story of booking density, meeting duration, organizer behavior, or peak usage. But it can be enough for a first sweep, especially in tenants where the immediate question is whether old resource mailboxes have any calendar life at all.
The virtue of this method is that it is simple and familiar. Exchange admins already use mailbox folder statistics for many housekeeping tasks, and the command can be run in bulk against a set of resource mailboxes. For cleanup projects, simplicity has value.
The danger is false confidence. A calendar folder with items is not necessarily a currently used resource; old recurring meetings, migrated data, test bookings, or stale calendar objects can all create misleading signals. Conversely, a resource created for a future office opening might have little historical data but still be important.
So this method belongs in the triage stage, not the final report. It can help identify mailboxes that deserve deeper inspection, but it should not be the sole basis for deleting resources, changing booking policies, or telling facilities that a room is unused.

Calendar Diagnostics Are the Wrong Tool for Bulk Truth​

Microsoft is unusually direct about one method administrators should avoid: Get-CalendarDiagnosticObjects. The warning is worth taking seriously because the name sounds tempting. If you are diagnosing calendar use, surely calendar diagnostic logs must be useful.
They are useful, but for a different job. Calendar diagnostic logs are designed to troubleshoot individual meeting problems. They include calendar-related data from multiple places, not just the Calendar folder, and they can produce a surprisingly large volume of log entries for a single meeting.
That makes them a poor fit for bulk reporting. Running diagnostic-log queries across many rooms and many meetings is likely to be slow, noisy, fragile, and hard to interpret. It may time out, return errors, or generate far more data than the administrator needs.
This is a classic systems-administration trap: using a forensic tool as a reporting tool because it exposes more data. More data is not always more truth. For utilization, the question is aggregate and repeatable. Diagnostic logs are event-specific and investigative. Confusing the two creates work without creating confidence.

The Missing Report Says Something About Microsoft 365 Admin Life​

The absence of a native resource utilization report is not catastrophic, but it is revealing. Microsoft 365 has become the system of record for how organizations communicate and coordinate, yet some of the most practical operational questions still require stitched-together scripts. The admin center often tells you what Microsoft thinks is important; PowerShell tells you what customers actually need.
Room and equipment mailboxes are a perfect example. They are not glamorous. They do not sell Copilot licenses, headline Ignite demos, or anchor security keynotes. But they quietly encode how a company’s physical space is being used, and that has become strategically important in the hybrid-work era.
A native report would not need to solve everything. Even a modest built-in view showing resource mailbox type, event count, last booking, next booking, total booked hours, and top-level utilization bands would save administrators from reinventing the same scripts across thousands of tenants. More advanced organizations could still use Graph for custom analytics.
The fact that Microsoft’s answer is “here are the building blocks” rather than “here is the report” reflects the broader Microsoft 365 bargain. The platform is powerful enough to let admins extract the answer, but not always polished enough to hand them the answer. For many IT teams, that gap is where operational toil lives.

Practical Use Starts With Defining “Active”​

Before running any command, administrators should define what “actively used” means. That sounds obvious, but it is the difference between a report that settles an argument and a report that starts one. A room with one booking in 12 months is technically active; it may still be functionally irrelevant.
A useful utilization project should separate several categories. There are resources with recent past bookings, resources with future bookings, resources with only old bookings, resources with recurring meetings but little variety, and resources with no meaningful calendar activity. Each category implies a different next step.
For cleanup, the best targets are mailboxes with no recent bookings, no future bookings, no known physical asset owner, and no special business purpose. For workplace planning, the richer signals matter more: number of booked hours, room size, location, weekday patterns, and the ratio of recurring to ad hoc meetings.
This is also where naming and metadata become painful. If room mailboxes are inconsistently named, missing location data, or disconnected from building and floor conventions, the report will be harder to use. Exchange can tell you that a mailbox has events; it cannot magically know that “CR-East-17” and “Boston Huddle 17” belong to the same facilities planning model unless the tenant’s data hygiene supports it.

The Best Answer Is Usually a Two-Step Report​

The most defensible approach is a two-step process. First, use Exchange Online PowerShell to identify the population of resource mailboxes and get a quick activity signal. Then, for resources that need deeper analysis, use Graph to pull richer event data.
That hybrid model plays to each tool’s strengths. Exchange PowerShell is excellent at recipient discovery and broad administrative filtering. Graph is better for detailed event properties and integration with custom reporting workflows.
For example, an administrator might use Exchange to pull all room mailboxes, workspaces, and equipment mailboxes, then run a quick calendar-view query across a one-year window. Any mailbox with zero events becomes a cleanup candidate. Any mailbox with activity moves into the Graph stage, where the script calculates booking counts, total hours, organizer distribution, and recurring meeting patterns.
This layered approach also reduces unnecessary exposure. Not every audit requires pulling subjects and organizers for every room. If a simple event count resolves half the estate, the more sensitive Graph report can be limited to the resources where detail is justified.
The result is not just better security; it is better administration. Reports that collect only what they need are easier to explain, easier to maintain, and easier to defend when someone asks why an app can read calendar data.

The Script Is Not the Governance Model​

There is a temptation in Microsoft 365 administration to treat a working script as the end of the story. It is not. A script can find resource mailbox activity, but it cannot decide who owns a room, whether a stale equipment mailbox should be deleted, or whether a workspace reflects a real workplace policy.
A good resource mailbox review should connect technical findings to ownership. Every resource should have a business owner, a physical or logical purpose, a booking policy, and a lifecycle. If nobody can explain why a mailbox exists, the calendar data is only one part of the evidence.
Administrators should also be careful with deletion. Removing a resource mailbox can break future bookings, historical references, room panels, Teams Rooms configurations, third-party scheduling tools, or facilities integrations. The safer pattern is to disable booking, hide the mailbox from address lists if appropriate, notify owners, wait through a review period, and then remove it.
There is also an end-user communications angle. If people have been booking a room that facilities considers retired, the problem may not be the mailbox. It may be that the directory still advertises the wrong spaces, or that booking policies allow behavior the organization no longer wants.
The reporting exercise, in other words, often exposes governance drift. The mailboxes are just where the drift becomes visible.

The Resource-Mailbox Audit Microsoft Still Hasn’t Productized​

The concrete path forward is clear enough, even if Microsoft has not wrapped it in a native report. Administrators should resist the urge to over-collect on day one and instead build a repeatable inventory that can mature over time.
  • Start with Exchange Online PowerShell when the immediate need is to identify room, equipment, or workspace mailboxes and count calendar activity over a defined window.
  • Use Microsoft Graph when the report needs event-level detail such as organizer, subject, start time, end time, duration, or downstream analytics.
  • Scope Graph application access to resource mailboxes wherever possible, because broad calendar permissions are too sensitive for a convenience script.
  • Treat Get-MailboxFolderStatistics as a triage tool rather than a complete utilization report.
  • Avoid Get-CalendarDiagnosticObjects for bulk reporting because it is designed for troubleshooting individual calendar issues, not estate-wide usage analysis.
  • Define “active” before collecting data, because a single booking, a recurring placeholder, and a heavily used conference room should not all mean the same thing.
Microsoft’s guidance is useful because it gives administrators practical options, but it also highlights a product gap that has become harder to ignore. As hybrid work settles from emergency policy into long-term operating model, resource mailboxes are no longer just Exchange objects; they are data points in how companies understand offices, assets, and employee behavior. Until Microsoft turns that reality into a native report, the organizations that know their rooms best will be the ones willing to script the truth out of their calendars.

References​

  1. Primary source: Microsoft Exchange Team Blog
    Published: Thu, 21 May 2026 13:38:55 GMT
  2. Official source: learn.microsoft.com
  3. Related coverage: windowsforum.com
  4. Official source: microsoft.github.io
  5. Related coverage: javadoc.io
  6. Related coverage: msxfaq.de
 

Microsoft’s Exchange Team said on May 21, 2026, that Exchange Online still has no native report for identifying active Resource Mailboxes, leaving administrators to infer usage from calendar data in PowerShell, Microsoft Graph, or mailbox folder statistics. That answer is useful, but it is also a confession. A cloud service that can meter licenses, score risk, and surface Copilot prompts across a tenant still cannot simply tell an admin which rooms, equipment mailboxes, and workspaces are actually being used. The result is another small but revealing Microsoft 365 gap: operational truth exists, but only if IT is willing to assemble it.

Microsoft 365 admin workaround diagram comparing no native report to Graph API workflow with data aggregation.Microsoft Turns a Simple Facilities Question Into an Admin Project​

Resource mailboxes sound humble because they are. They represent conference rooms, shared devices, projectors, vehicles, workspaces, and other bookable resources that live inside Exchange Online rather than in a separate facilities platform. They are the connective tissue between Outlook, Teams meetings, hybrid work schedules, and the physical office.
That makes the missing report more consequential than it first appears. Knowing whether a room mailbox is active is not just a housekeeping exercise. It can influence office consolidation, booking policy, hardware refreshes, workplace analytics, support triage, and in some cases licensing and security decisions around stale objects.
Microsoft’s own blog post frames the problem plainly: organizations create Resource Mailboxes and later want to know which ones are actually being used. That should be a routine administrative question. Instead, Microsoft says there are currently no native reports that include Resource mailbox utilization details.
The absence is especially awkward because Exchange Online already contains the underlying signals. Calendar items exist. Folder statistics exist. Graph can expose event data. The system knows enough to answer the question, but Microsoft has not wrapped that knowledge into an admin-center report with filters, thresholds, export controls, and role-aware access.
So the Exchange Team’s guidance is not a new feature announcement. It is a map of the service’s seams.

The Fastest Route Is Also the Least Descriptive​

The first Microsoft-recommended option is Get-CalendarViewDiagnostics, an Exchange Online PowerShell cmdlet that can inspect a mailbox calendar over a specified time window. In the example Microsoft published, an administrator checks a resource mailbox from six months in the past to six months in the future, producing a view of meetings on that calendar.
For many admins, this is the pragmatic winner. It runs in Exchange Online PowerShell, it targets the calendar rather than trawling through unrelated mailbox folders, and it can be combined with the familiar Get-Mailbox filtering model. If the goal is to answer “does this room have meetings?” or “how many calendar objects are there?” it is probably the simplest path.
The limitation is just as important: Microsoft notes that the meeting subject is not exposed as a property in this output. That matters because usage is rarely only a binary state. A room with 300 recurring “hold” meetings is not the same as a room used daily by different teams, and a workspace booked for maintenance blocks is not the same as one genuinely occupied by employees.
Still, the cmdlet’s narrowness can be an advantage. It reduces the temptation to over-collect. If a facilities or messaging team only needs counts and date ranges, avoiding organizer names and subjects may be healthier from a privacy perspective.
This is where administrators should resist the urge to turn every report into surveillance. Resource usage analysis should usually be about rooms and assets, not about building a shadow attendance system. Get-CalendarViewDiagnostics is blunt, but blunt tools sometimes preserve boundaries that richer tools blur.

Graph Gives the Better Report, Then Hands You the Governance Problem​

The second path is Microsoft Graph, specifically the calendar view API as surfaced through the Microsoft Graph PowerShell SDK or another Graph-capable client. This is the approach Microsoft recommends when admins need more detailed event properties, including organizer, subject, start time, and end time.
Graph is the more modern answer and the more dangerous one. With the right permissions, an application can read calendar data across mailboxes. That is powerful for reporting, automation, and custom dashboards, but it also moves the discussion from “how do I count bookings?” to “who can read calendar contents, at what scope, and under what audit expectations?”
Microsoft’s example uses an Entra ID app registration with the Calendars.Read application permission. That permission model is convenient for unattended scripts, but broad application permissions can be uncomfortable in a tenant with thousands of mailboxes. The good news is that Microsoft points administrators toward Exchange Online’s Role Based Access Control for Applications, which can restrict a Graph app to a scoped set of mailboxes such as Resource Mailboxes.
That scoping detail is not a footnote. It is the difference between a reasonable operations tool and an overprivileged tenant-wide calendar reader. If an organization is going to build a recurring Resource mailbox utilization report, it should treat the Graph app like a production integration, not a one-off script copied into a Friday afternoon PowerShell session.
Graph also surfaces a familiar Microsoft 365 tradeoff. The richer and more API-native the solution becomes, the more administrators need to understand Entra app registrations, certificate or secret handling, delegated versus application permissions, Graph SDK modules, and Exchange RBAC. The reporting question gets answered, but the blast radius must be designed.
This is why smaller shops may avoid Graph until they truly need it. If all the admin wants is a list of rooms with activity in the last 180 days, Exchange Online PowerShell is easier to defend. If the business wants a report showing organizers, subjects, booking lengths, recurring patterns, and utilization by location, Graph becomes the right tool — but only with a real permission model.

Folder Statistics Are the Smoke Alarm, Not the Fire Investigation​

Microsoft’s third option is Get-MailboxFolderStatistics with -IncludeOldestAndNewestItems and -FolderScope Calendar. This is the quick-and-dirty approach: look at the Calendar folder and infer activity from oldest and newest item data.
There is nothing wrong with this if expectations are modest. It can tell an admin whether a calendar folder has items and roughly whether it has recent activity. It can be run in bulk against a set of room mailboxes, and it avoids the complexity of Graph.
But it is not a utilization report in any serious sense. It does not explain how often a room is booked, whether bookings were accepted or declined, whether the meetings were cancelled, whether a recurring series is inflating the apparent activity, or whether calendar objects correspond to meaningful use of a physical resource.
Its value is triage. If an organization has hundreds of stale room mailboxes inherited from office moves, mergers, and naming conventions from three Exchange migrations ago, folder statistics can help separate obviously dead objects from candidates that deserve deeper inspection. It is the first pass, not the audit.
The danger is that a simplistic metric can become a business decision. A room mailbox with a recent item may still be operationally irrelevant. A room with few bookings may be crucial for a specialized team, a regulated workflow, or an executive area. Data from Exchange should inform facilities decisions, not replace local context.

Microsoft’s “Don’t Use This” Warning Is the Most Valuable Part​

The strongest language in Microsoft’s post is reserved for Get-CalendarDiagnosticObjects. The Exchange Team says not to use Calendar Diagnostic Logs for bulk Resource mailbox utilization reporting, even though the method can technically retrieve meeting details.
That distinction matters. Many admin scripts begin life in the gray zone between “works” and “supported for this purpose.” Calendar diagnostic logs were designed to troubleshoot individual meeting problems, not to gather bulk reporting data across many mailbox calendars. Microsoft warns that the data can include calendar-related information from multiple folders, including Inbox, Sent Items, Deleted Items, and Recoverable Items locations.
That makes the cmdlet noisy, expensive, and easy to misuse. Microsoft says querying even a single meeting can sometimes produce more than 1,000 logs, which means bulk use across lots of meetings and mailboxes may fail, time out, or generate errors. In support terms, this is the vendor telling admins not to turn a diagnostic microscope into a tenant-wide reporting crawler.
The advice is sensible, and it also says something about Exchange’s long administrative history. Exchange is full of powerful diagnostic tools that can be bent into reporting tools by determined administrators. That flexibility is one reason Exchange admins have survived decades of product transitions, but it is also how brittle internal workflows become institutionalized.
The practical takeaway is simple: if Microsoft says Support will redirect you away from the method, do not build your reporting pipeline on it. Scripts have a habit of becoming business processes, and business processes have a habit of failing at the worst possible time.

The Missing Report Reflects a Bigger Microsoft 365 Pattern​

The frustrating part is not that a workaround exists. Workarounds are the native language of enterprise administration. The frustrating part is that Resource mailbox utilization is an obvious report for a cloud productivity platform with a mature admin center.
Microsoft 365 has spent years expanding dashboards, usage analytics, adoption scores, security recommendations, and service health panels. Yet administrators still routinely fall back to PowerShell or Graph for questions that are operationally basic but product-team peripheral. Resource mailbox utilization sits squarely in that category.
This is not a purely technical omission. Microsoft has to balance privacy, performance, compliance, and product scope. A “room utilization” report can quickly become sensitive if it exposes meeting subjects, organizers, attendance patterns, or executive schedules. It can also become misleading if it treats a calendar booking as proof of physical occupancy.
But those are reasons to design the report carefully, not reasons to avoid it. Microsoft could expose a privacy-preserving Resource utilization view with counts, date ranges, acceptance states, and optional scoped detail for authorized roles. It could distinguish rooms, equipment, and workspaces. It could provide exportable summaries without requiring every tenant to build its own Graph app.
The current state favors the administrators who already know the Exchange and Graph layers well. It disadvantages teams that live mostly in the Microsoft 365 admin center, where a report’s absence is often interpreted as a signal that the data is unavailable. In reality, the data is available; the product just makes admins fetch it the hard way.

Hybrid Work Made Room Mailboxes Strategic Again​

Before 2020, many organizations treated room mailboxes as dull plumbing. They mattered when a meeting room double-booked or an executive assistant could not reserve a boardroom, but they rarely entered strategic discussions. Hybrid work changed that.
Now the calendar footprint of rooms and workspaces can influence real estate decisions. Companies want to know which offices are underused, which floors fill up on Tuesdays through Thursdays, and whether bookable desks or collaboration rooms are more valuable than fixed seating. Exchange Resource Mailboxes are not a complete occupancy system, but they are one of the few structured signals many organizations already have.
That is why the lack of a native report feels out of step. Microsoft has heavily promoted Teams, Places, Viva, Copilot, and other tools that assume the workplace is now digitally mediated. Yet one of the oldest digital representations of the workplace — the room mailbox calendar — still requires command-line interrogation to answer basic usage questions.
There is also an asset-management angle. Equipment mailboxes can represent shared devices, vehicles, carts, loaner hardware, and specialized facilities. If these mailboxes sit unused, they may indicate abandoned processes or stale assets. If they are heavily used, they may justify additional capacity or tighter booking controls.
For sysadmins, this becomes part of tenant hygiene. Stale Resource Mailboxes create confusion in address lists, clutter room finders, and preserve permissions and policies that nobody remembers approving. Active-use reporting is not glamorous, but it is how an Exchange environment remains understandable.

The Best Method Depends on the Question You Actually Need Answered​

The Exchange Team presents three options, but the real choice begins before a cmdlet is typed. Administrators need to define what “actively used” means for their organization. A room with one future booking might be active in a legalistic sense; a room with weekly meetings might be active operationally; a room booked 70 percent of business hours might be capacity constrained.
For a lightweight inventory cleanup, Get-CalendarViewDiagnostics is likely enough. It can show whether calendar activity exists in a defined time window and can be run against Room or Equipment mailboxes discovered through Exchange Online PowerShell. The lack of subject detail is not a fatal flaw when the desired output is a usage count.
For a richer utilization dashboard, Graph is the better foundation. It can provide event details and integrate with broader reporting systems, and it is usable from PowerShell or other languages. But that path should include scoped permissions, certificate-based authentication where appropriate, and clear documentation of what data is collected.
For a rough “has this mailbox calendar ever had recent items?” pass, Get-MailboxFolderStatistics has a place. It is not elegant, and it should not be oversold, but it is useful when an admin needs a fast screening mechanism before applying a more expensive query.
The anti-pattern is Get-CalendarDiagnosticObjects. Microsoft’s warning should settle the matter for production reporting. If the job is bulk utilization, use a reporting-oriented approach, not a troubleshooting log designed for forensic detail.

A Sensible Report Starts With Less Data, Not More​

There is a temptation in Microsoft 365 administration to collect everything first and decide later what matters. Graph makes that temptation stronger because it can expose detailed calendar properties and can be automated at scale. For Resource Mailboxes, that instinct should be resisted.
A good utilization report can begin with a narrow dataset: mailbox identity, resource type, location metadata if available, event count, first event in range, last event in range, total booked duration, and perhaps recurring versus non-recurring indicators. Many organizations do not need meeting subjects or organizer names to decide whether a room is being used.
If a second-level investigation is required, richer data can be collected under tighter controls. That is where scoped Graph permissions, management scopes, audit logs, and documented access approvals matter. The difference between a tenant hygiene report and a calendar surveillance tool is often not the API but the governance around it.
Admins should also be careful with time windows. Microsoft’s examples use a six-month lookback and six-month lookahead, which is a useful starting point but not a universal answer. A university, hospital, law firm, manufacturer, and software company may have very different booking cycles and resource patterns.
Finally, reports should account for false signals. Recurring meetings can exaggerate usage. Cancelled events can muddy counts depending on how they are queried. Rooms may be booked but unused. Some resources may be reserved through external systems and only synchronized into Exchange. Calendar data is evidence, not ground truth.

PowerShell Remains the Admin Center’s Escape Hatch​

One reason Microsoft’s guidance lands well with experienced Exchange admins is that it follows a familiar pattern: the admin center is incomplete, but PowerShell can get you there. Exchange has always rewarded the people who learn its command line. Exchange Online continues that tradition, even as Microsoft 365 tries to become more graphical and policy-driven.
That is both strength and weakness. PowerShell allows administrators to compose exactly the query they need, pipe mailbox objects into reporting commands, and export the results into CSV or downstream systems. It is fast, flexible, and deeply suited to bulk operations.
But PowerShell as the default answer also means repeatability depends on local skill. One tenant gets a clean script with error handling, scoped queries, and scheduled reporting. Another gets a copy-pasted snippet run by a global admin with no documentation and no retention plan for the output. The platform permits both.
This is where Microsoft’s guidance could evolve into a supported script or sample workbook. The company does not necessarily need to build every report into the Microsoft 365 admin center immediately. But for common operational gaps, a maintained sample with recommended permissions, throttling behavior, privacy guidance, and export structure would go a long way.
Until then, the burden sits with admins. They must decide not only which command returns data, but which reporting pattern they are willing to own.

The Security Story Is Really About Scope​

The most security-sensitive part of this discussion is not the cmdlet that counts events. It is the authorization model around calendar data. Resource mailboxes may sound less sensitive than user mailboxes, but their calendars can still reveal executive meetings, customer visits, incident response activity, legal discussions, hiring loops, and physical movement patterns.
That is why the Graph approach deserves special scrutiny. Application permissions are powerful because they are not tied to a user signing in interactively. They are also risky when granted too broadly. A secret stored badly or an app granted tenant-wide calendar read access can become a significant exposure.
Microsoft’s mention of application RBAC in Exchange Online is therefore one of the most important parts of the guidance. If the reporting app only needs Resource Mailboxes, it should only be able to read Resource Mailboxes. If it only needs a subset of resources, scope it to that subset.
Certificate authentication is generally preferable to casual client-secret handling, but certificates are not magic. They must be stored, rotated, monitored, and removed when the reporting job is retired. The same lifecycle discipline that applies to any automation identity applies here.
The right mental model is least privilege with a calendar-specific twist. Collect the minimum properties needed, from the minimum mailbox set, for the minimum time range, under an identity whose purpose is obvious when reviewed six months later.

Microsoft’s Workaround Menu Leaves Admins With a Clear Hierarchy​

The practical hierarchy is not complicated, even if the implementation details can be. Microsoft has effectively given administrators a menu that maps to three levels of ambition: quick count, rich report, and rough triage. The trick is not to confuse them.
A help desk or messaging admin trying to determine whether old rooms can be hidden from address lists should start with Exchange Online PowerShell. A workplace analytics team asking for detailed booking patterns should use Graph with scoped access. A tenant cleanup effort looking for obviously empty calendars can begin with folder statistics and then validate the results.
The command Microsoft most clearly discourages should stay out of the reporting conversation. Calendar Diagnostic Logs are for troubleshooting calendar problems, not building utilization dashboards. That is the line admins should document before someone rediscovers the cmdlet in a search result.
The broader lesson is that “active use” should be defined before data collection begins. Without a threshold, any report can be made to support any conclusion. Is a room active if it has one event? Ten events? Bookings in three of the last six months? More than 20 percent booked time during working hours? The answer belongs to the business process, not the cmdlet.

The Calendar Data That Should Decide the Next Cleanup​

For administrators looking to turn Microsoft’s guidance into action, the path is refreshingly concrete once the boundaries are set. This is not a case where Exchange Online hides the data completely. It is a case where the data must be queried with intent.
  • Organizations that only need a count of meetings in a defined window should start with Get-CalendarViewDiagnostics against filtered Resource Mailboxes.
  • Organizations that need organizer, subject, start, and end details should use Microsoft Graph, but only after scoping the app’s access to the relevant Resource Mailboxes.
  • Organizations doing a first-pass cleanup can use Get-MailboxFolderStatistics to identify calendars that appear empty or stale before running deeper checks.
  • Organizations should avoid Get-CalendarDiagnosticObjects for bulk reporting because Microsoft positions it as a troubleshooting tool, not a utilization engine.
  • Organizations should define “active” in business terms before exporting data, because raw calendar presence is not the same as meaningful room or equipment use.
Microsoft’s guidance is helpful precisely because it is modest. It does not pretend that Exchange Online has suddenly gained a polished utilization dashboard. It tells admins where the data lives, which paths are sane, and which tempting shortcut to avoid.
The bigger opportunity is still Microsoft’s. Resource Mailboxes have become more important in a world where office space, hybrid schedules, shared equipment, and workplace services are all under pressure to justify themselves with data. If Microsoft wants the Microsoft 365 admin experience to match the operational reality of modern work, this should eventually become a governed, privacy-aware report rather than another script in an admin’s toolbox.

References​

  1. Primary source: Microsoft Exchange Team Blog
    Published: Thu, 21 May 2026 13:38:55 GMT
  2. Official source: learn.microsoft.com
  3. Official source: microsoft.github.io
  4. Related coverage: windowsforum.com
  5. Related coverage: developer.nylas.com
  6. Related coverage: javadoc.io
 

Attachments

  • windowsforum-exchange-online-no-native-report-for-active-resource-mailboxes-powershell-graph-...webp
    windowsforum-exchange-online-no-native-report-for-active-resource-mailboxes-powershell-graph-...webp
    101.5 KB · Views: 0
Back
Top