Introducing the M365 Report Tools PowerShell Module
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.