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 doesnt 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 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 capabilites.

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 an suggestions or comments, feel free to leave a comment here or drop me a line over on Github.