Skip to content

wesellis/TECH-Microsoft-Graph-API-Explorer-PowerShell-M365-Management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ” Microsoft Graph API Explorer PowerShell Toolkit

M365 Management and Automation Scripts

PowerShell Graph API M365 License

🎯 Overview

PowerShell toolkit for exploring and managing Microsoft 365 services through Graph API. Simplifies complex API calls, provides ready-to-use scripts for common tasks, and helps IT admins manage M365 environments efficiently.

πŸ“Š What It Does

  • Explore Graph API without writing complex code
  • Manage Users across Azure AD and M365
  • Automate Reports for compliance and auditing
  • Handle Bulk Operations on mailboxes, groups, teams
  • Export Data in multiple formats
  • Test API Calls before implementation

πŸ’‘ Common Use Cases

User Management

# Get all users with specific license
Get-GraphUsers -Filter "assignedLicenses/any(x:x/skuId eq 'SPE_E5')"

# Bulk create users from CSV
Import-Csv users.csv | New-GraphUser -SendWelcomeEmail

# Find inactive users
Get-InactiveUsers -Days 90 | Export-Csv inactive_users.csv

Email & Calendar

# Search emails across organization
Search-GraphMail -Query "invoice" -From "2024-01-01"

# Export calendar events
Get-GraphCalendarEvents -User "user@domain.com" -Days 30

# Set out-of-office for multiple users
Set-BulkOutOfOffice -UserList $users -Message "On vacation"

Teams Management

# Create team from template
New-GraphTeam -Template "ProjectTeam" -Name "Q1 Project"

# Audit team membership
Get-TeamMembershipReport -IncludeGuests | Export-Excel

# Archive inactive teams
Get-InactiveTeams -Days 180 | Set-TeamArchiveStatus -Archive

⚑ Quick Start

# Install module
Install-Module Microsoft.Graph
Install-Module GraphExplorerToolkit

# Connect to Graph
Connect-GraphExplorer -TenantId "your-tenant"

# Run your first query
Get-GraphData -Resource "users" -Top 10

πŸ› οΈ Key Scripts Included

Reports

  • Get-LicenseReport.ps1 - License usage and costs
  • Get-SecurityReport.ps1 - Security compliance status
  • Get-MailboxSizeReport.ps1 - Storage utilization
  • Get-GuestUserReport.ps1 - External user audit
  • Get-GroupMembershipReport.ps1 - Group memberships

Automation

  • Sync-ADtoGraph.ps1 - Sync on-prem AD to Azure AD
  • Process-JoinersLeavers.ps1 - Onboarding/offboarding
  • Update-UserProperties.ps1 - Bulk property updates
  • Migrate-DistributionLists.ps1 - DL to M365 Groups
  • Backup-TeamsConfig.ps1 - Teams configuration backup

Utilities

  • Test-GraphPermissions.ps1 - Verify API permissions
  • Convert-GraphData.ps1 - Transform API responses
  • Export-GraphSchema.ps1 - Document API schema
  • Monitor-GraphThrottling.ps1 - Track API limits
  • Invoke-GraphBatch.ps1 - Batch API requests

πŸ“ˆ Features

Smart Query Builder

# Build complex queries easily
$query = New-GraphQuery -Resource "users" `
    -Select "displayName,mail,department" `
    -Filter "department eq 'IT'" `
    -OrderBy "displayName" `
    -Top 100

Invoke-GraphQuery $query

Batch Operations

# Process in batches to avoid throttling
$users | Invoke-GraphBatch -BatchSize 20 -Operation {
    param($user)
    Update-GraphUser -Id $user.id -Department "NewDept"
}

Error Handling

# Automatic retry with exponential backoff
Invoke-GraphRequest -Uri $uri -RetryCount 3 -RetryDelay 2

πŸ”§ Advanced Features

Custom Cmdlets

Create your own Graph cmdlets:

function Get-CompanyPhones {
    Get-GraphData -Resource "users" `
        -Select "displayName,mobilePhone,businessPhones" `
        -Filter "companyName eq 'Contoso'"
}

Pipeline Support

# Chain operations
Get-GraphUsers |
    Where-Object { $_.accountEnabled -eq $false } |
    Set-GraphUserStatus -Enabled $true |
    Send-GraphMail -Template "AccountReactivated"

Parallel Processing

# Speed up bulk operations
$users | ForEach-Object -Parallel {
    Get-GraphUserDetails -Id $_.id
} -ThrottleLimit 10

πŸ“Š Export Options

  • CSV - For Excel analysis
  • JSON - For further processing
  • HTML - For reports
  • XML - For integration
  • SQLite - For local database

πŸ”’ Security

  • Certificate Authentication supported
  • Managed Identity for Azure resources
  • Least Privilege permission model
  • Audit Logging of all operations
  • Secure Credential storage

πŸ› Troubleshooting

Common issues and solutions:

Issue Solution
Permission denied Check app registration permissions
Throttling (429) Use batch operations and delays
Token expired Refresh with Connect-GraphExplorer
No data returned Verify filter syntax and permissions

πŸ“š Documentation

🀝 Contributing

Contributions welcome! Share your useful Graph API scripts.

πŸ“œ License

MIT License - Free for all use


Simplify Microsoft Graph API Management

Download

Free β€’ Open Source β€’ Community Driven

About

πŸ”§ PowerShell scripts for Microsoft Graph API automation. User, group, and tenant management made simple.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •