Microsoft 365 · PowerShell · Graph API

Microsoft 365
Tenant Health Audit Dashboard

A PowerShell-based Microsoft 365 tenant auditing project that connects to a live lab tenant through Microsoft Graph, inventories Entra ID users, exports audit data, and generates a browser-viewable HTML report.

Final Microsoft 365 tenant HTML audit report opened in Safari
Project Summary

Built as a real admin workflow, not a mockup.

This project demonstrates a practical Microsoft 365 operations workflow: prepare PowerShell modules, authenticate to Microsoft Graph, query tenant objects, export audit data, and convert the results into a readable HTML report.

1Live M365 lab tenant connected
10+Entra ID user objects audited
2Report formats generated: CSV + HTML
60–90Minute MVP build window

Technical Scope

Version 1 focuses on Microsoft Graph PowerShell and Entra ID user inventory. The report exports a CSV and a basic HTML view from live tenant data.

Operations Value

Shows how a support or cloud admin can quickly audit tenant identity objects, generate documentation, and package the results for review.

Portfolio Positioning

Designed to support Microsoft 365 Administrator, IT Support Specialist, Endpoint Administrator, and Cloud Support career paths.

Workflow

From repository to live tenant report.

The workflow follows a simple enterprise pattern: connect, query, export, report, and document.

1

Initialize Repo

Created a dedicated GitHub project and cloned it into VS Code.

2

Prepare PowerShell

Installed Microsoft Graph and Exchange Online PowerShell modules for Microsoft 365 administration.

3

Authenticate

Connected to the Microsoft 365 tenant using delegated Graph permissions.

4

Audit & Export

Queried organization and user objects, then exported CSV and HTML reporting artifacts.

Install-Module Microsoft.Graph -Scope CurrentUser
Install-Module ExchangeOnlineManagement -Scope CurrentUser

Connect-MgGraph -Scopes "User.Read.All","Directory.Read.All","Organization.Read.All"

Get-MgOrganization
Get-MgUser | Select-Object DisplayName, UserPrincipalName

Get-MgUser | Select-Object DisplayName, UserPrincipalName | Export-Csv users-report.csv -NoTypeInformation
Get-MgUser | ConvertTo-Html DisplayName,UserPrincipalName -Title "M365 Tenant Audit" | Out-File tenant-report.html
Build Evidence

Clean screenshots from the actual implementation.

Selected screenshots are cropped and organized to show the meaningful proof points without unnecessary desktop clutter.

Roadmap

Next upgrades that make this enterprise-grade.

Version 1 proves the connection and reporting pipeline. The next versions can add security posture, mail flow, endpoint, and compliance checks.

Planned Audit Modules

MFA registration status Disabled accounts License assignment inventory Admin role review Shared mailbox summary Inactive users Conditional Access overview Intune device inventory

Professional Enhancements

  • Styled HTML dashboard with status cards and risk indicators.
  • Export report versions by timestamp for historical comparison.
  • Add executive summary language for non-technical stakeholders.
  • Publish the project as a GitHub Pages case study.

Note: This portfolio version uses a lab Microsoft 365 tenant. Version 1 validates the Microsoft Graph PowerShell workflow. Exchange Online reporting is prepared as a future expansion area rather than claimed as completed mailbox auditing.