The Why

I often find the need to gather and extract data from various areas M365 for auditing or for project planning. I had the idea of putting together a PowerShell module containing wrapper functions for some of the most common reports I and colleagues ask for. I wanted to make the commands easy to discover and easy to use. I would like to introduce the M365.Report.Tools PowerShell module!

What can it do?

To quote myself, M365.Report.Tools is:

A PowerShell Module with tools built for gathering data and creating reports on various areas of M365 services. This module is designed with ease of use with several baked-in custom reports and the ability to export any built-in Admin center usage report. Reports can be easily exported to CSV file, Excel workbook(s), or JSON.

This module leverages the Microsoft Graph PowerShell SDK, Exchange Online PowerShell, SharePoint Online PowerShell, and ImportExcel. The majority of commands use the Graph SDK and seamlessly handle the permission scope and connection to Graph for you.

I tried to use the Microsoft Graph SDK as much as possible; however, there are still places where Graph doesn’t have much reach, such as inside Exchange Online and SharePoint Online. For more information on working with the Graph SDK, see here .

I plan on continuing development on this module and will add additional functions with more reports. Here are the commands so far:

Get-M365GroupReport:

Report of every group including group type and source of authority.

Get-M365MailboxReport:

Report of every mailbox including details such as mailbox size. Use -IncludeMailboxSize to report on each mailbox’s current size.

Get-M365MGUserPrincipalGroupMembership:

Get every group a user is a member of.

Get-M365SharePointSiteSummary:

Summarize all SharePoint sites, including details for each site such as storage usage and sharing capabilities.

Get-M365SSOEnterpriseApps:

Return all AzureAD enterprise applications with SAML SSO integration.

Get-M365TeamsChannelReport:

Return a list of every channel in each Team, including members.

Get-M365TeamsReport:

Return a list of all Teams and Team members.

Get-M365TenantLicenseReport:

Return a list of all licenses in a tenant, including current utilization.

Get-M365UsageReport:

Return any of the baked-in Admin Center period usage reports for easy export.

Get-M365UserLicenseReport:

List every license assigned to every user.

Get-M365UserReport:

Get a summary report for all user accounts in an M365 tenant.

Get-M365AdminReportSettings:

Get the current Admin Report setting for Admin Center period usage reports.

Set-M365AdminReportSettings:

Change the admin report settings to hide or show names in Admin Center usage reports.

Simply pipe any of these commands to Export-CSV or Export-Excel for easy export. This should make it easy for anyone with minimal PowerShell experience to use.

If you have any suggestions or comments, feel free to leave a comment here or drop me a line over on GitHub .