Sections

  • Home
  • Posts
  • Archive
  • LLM Prompts

BTC

Bitcoin QR Code

Recently Modified

  • Exporting Conditional Access Policies on 2025-11-06
  • Exchange Online Inbox Rule Collector on 2025-07-30
  • Test SMTP on 2025-07-02
  • Videos as Teams Backgrounds on 2025-07-02
  • UDM Parameters for Google Search on 2025-06-18
  • Troubleshoot Crashing Apps with ProcDump & WinDbg on 2025-05-01
  • Stub Title on 2025-03-07
  • Automated IIS Application Pool Restart with PowerShell on 2024-10-16
  • Managing Microsoft Office Versions with OfficeC2RClient on 2024-09-10
  • Automated Batch Image Compression with Python on 2024-07-30

Exporting Conditional Access Policies

Published: November 6, 2025 | Last Modified: November 6, 2025

Tags: PowerShell Microsoft Graph AzureAD Conditional Access Automation

Categories: PowerShell


  • Overview
  • Key Features
  • The PowerShell Script
  • How to Use
  • Example Output
  • Why This Matters
  • Related Commands

Overview

Managing Conditional Access policies in Microsoft 365 can get messy when older versions of the Microsoft Graph PowerShell SDK modules conflict or fail to import correctly. This PowerShell script offers a fully automated reset and export process, removing all existing Graph modules, installing only the required ones, and exporting Conditional Access policies to JSON files for documentation or backup.

This is particularly useful when your Microsoft Graph environment becomes unstable or bloated after multiple updates, or when you just need a clean baseline for auditing Conditional Access.


Key Features

  • Cleans up all Microsoft.Graph modules silently.
  • Installs only minimal dependencies (Microsoft.Graph.Authentication and Microsoft.Graph.Identity.SignIns).
  • Connects securely to Microsoft Graph with the proper scopes.
  • Retrieves and exports all Conditional Access policies individually and as a combined JSON file.
  • Creates a clean export directory (C:\Temp\ConditionalAccessPolicies).

The PowerShell Script

<#
.SYNOPSIS
Fully resets Microsoft Graph PowerShell SDK modules and exports Conditional Access policies cleanly.
#>

Write-Host "`n=== Microsoft Graph Cleanup and Conditional Access Export ===" -ForegroundColor Cyan

# Step 1: Uninstall all Graph modules (silently)
Write-Host "`nRemoving all Microsoft.Graph modules..." -ForegroundColor Yellow
Get-Module Microsoft.Graph* -ListAvailable | ForEach-Object {
    try {
        Write-Host " - Removing $($_.Name)" -ForegroundColor DarkGray
        Uninstall-Module $_.Name -AllVersions -Force -ErrorAction SilentlyContinue
    } catch {}
}

# Step 2: Install only the required core and identity modules
Write-Host "`nInstalling minimal modules..." -ForegroundColor Yellow
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force -AllowClobber
Install-Module Microsoft.Graph.Identity.SignIns -Scope CurrentUser -Force -AllowClobber

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Identity.SignIns

# Step 3: Connect to Graph
Write-Host "`nConnecting to Microsoft Graph..." -ForegroundColor Cyan
Connect-MgGraph -Scopes "Policy.Read.All","Policy.Read.ConditionalAccess"
$ctx = Get-MgContext
Write-Host "✅ Connected as: $($ctx.Account)" -ForegroundColor Green

# Step 4: Retrieve policies
Write-Host "`nRetrieving Conditional Access policies..." -ForegroundColor Cyan
$Policies = Get-MgIdentityConditionalAccessPolicy -All

if (-not $Policies -or $Policies.Count -eq 0) {
    Write-Host "⚠️  No Conditional Access policies found or insufficient permissions." -ForegroundColor Yellow
    Disconnect-MgGraph
    return
}

Write-Host "`n✅ Retrieved $($Policies.Count) Conditional Access policy(ies):" -ForegroundColor Green
$Policies | ForEach-Object { Write-Host "   - $($_.DisplayName) [$($_.State)]" }

# Step 5: Export policies
$ExportPath = "C:\Temp\ConditionalAccessPolicies"
if (!(Test-Path $ExportPath)) { New-Item -ItemType Directory -Path $ExportPath | Out-Null }

foreach ($p in $Policies) {
    $SafeName = ($p.DisplayName -replace '[^a-zA-Z0-9-_]', '_')
    if ([string]::IsNullOrWhiteSpace($SafeName)) { $SafeName = "UnnamedPolicy_$([guid]::NewGuid().ToString())" }
    $File = Join-Path $ExportPath "$SafeName.json"
    $p | ConvertTo-Json -Depth 10 | Out-File $File -Encoding UTF8
    Write-Host "✅ Exported: $($p.DisplayName)" -ForegroundColor Green
}

$Combined = Join-Path $ExportPath "All_ConditionalAccessPolicies.json"
$Policies | ConvertTo-Json -Depth 10 | Out-File $Combined -Encoding UTF8
Write-Host "`n✅ Combined export saved to: $Combined" -ForegroundColor Green

Disconnect-MgGraph
Write-Host "`n=== Export Complete ===" -ForegroundColor Cyan

How to Use

  1. Open PowerShell as Administrator.
  2. Copy and paste the script above into your session or save it as Export-ConditionalAccess.ps1.
  3. Run the script:
    .\Export-ConditionalAccess.ps1
    
  4. When prompted, sign in with an account that has permission to read Conditional Access policies (e.g., Global Administrator, Security Administrator).
  5. The policies will be saved as individual .json files and as a combined export at:
    C:\Temp\ConditionalAccessPolicies
    

Example Output

=== Microsoft Graph Cleanup and Conditional Access Export ===
Removing all Microsoft.Graph modules...
 - Removing Microsoft.Graph.Authentication
 - Removing Microsoft.Graph.Users

Installing minimal modules...
Connecting to Microsoft Graph...
✅ Connected as: admin@contoso.com

Retrieving Conditional Access policies...
✅ Retrieved 4 Conditional Access policy(ies):
   - Block Legacy Auth [enabled]
   - Require MFA for Admins [enabled]
   - Require Compliant Device [enabled]
   - Block International Sign-ins [reportOnly]

✅ Exported: Block Legacy Auth
✅ Exported: Require MFA for Admins
✅ Combined export saved to: C:\Temp\ConditionalAccessPolicies\All_ConditionalAccessPolicies.json
=== Export Complete ===

Why This Matters

Conditional Access policies are the backbone of Microsoft 365 security posture. Backing them up regularly provides:

  • Disaster recovery protection in case of accidental deletions or corruption.
  • Change tracking for audit and compliance teams.
  • Ease of migration when moving tenants or auditing configurations.

This script automates the otherwise tedious process of resetting and exporting, ensuring clean module states and consistent policy exports every time.


Related Commands

  • Get-MgIdentityConditionalAccessPolicy — Retrieves Conditional Access policies.
  • Connect-MgGraph — Establishes the connection to Microsoft Graph API.
  • Uninstall-Module / Install-Module — Manages PowerShell modules.

Categories

  • Active Directory (4)
  • AI (3)
  • Azure AD (1)
  • C# (2)
  • C++ (1)
  • Computer Vision (1)
  • DNS (1)
  • Exchange (2)
  • Google (1)
  • Image Processing (2)
  • Java (32)
  • JavaScript (17)
  • Machine Learning (3)
  • MASM (3)
  • Media Processing (1)
  • Microsoft 365 (2)
  • Microsoft Office (1)
  • Microsoft Teams (1)
  • Networking (4)
  • Nodejs (1)
  • Office 365 (1)
  • P5.js (9)
  • PowerShell (27)
  • Processing (14)
  • Programming (1)
  • Python (19)
  • Reference (1)
  • Security (8)
  • Shell (16)
  • Stub (1)
  • System Administration (4)
  • Teams (1)
  • Visualization (1)
  • Web Administration (1)
  • Web Development (2)
  • Windows (9)

Tags

  • 10PRINT (1)
  • 3d-Modeling (1)
  • 3n+1 (1)
  • Account Management (1)
  • Acl (1)
  • Active-Directory (10)
  • Ad Sync (1)
  • Ai (9)
  • Android (1)
  • Animation (10)
  • Api (2)
  • Arrays (1)
  • Assembly (3)
  • Audio (3)
  • Audio Conversion (1)
  • Audit (1)
  • Automation (14)
  • Azure (4)
  • Azure Ad Connect (1)
  • AzureAD (1)
  • Base64 (1)
  • Bat (2)
  • Batch-Processing (1)
  • Bipartite Graph (1)
  • Bitset (1)
  • Buddhabrot (1)
  • Calendars (1)
  • Channel Management (1)
  • Client-Side (1)
  • Cmd (1)
  • Coding Challenge (15)
  • Collaboration (1)
  • Collatz Conjecture (1)
  • Command-Line (6)
  • Compliance (1)
  • Computer-Vision (3)
  • Conditional Access (1)
  • Coqui-Tts (1)
  • Counting Sort (1)
  • Creative-Coding (1)
  • Cuda (2)
  • Curl (1)
  • Cybersecurity (1)
  • Dag (1)
  • Data-Visualization (5)
  • Debugging (1)
  • Decoding (1)
  • Depth Estimation (1)
  • Device Management (1)
  • Directed Acyclic Graph (1)
  • Directory-Services (1)
  • Disjoint Set (1)
  • Distance (1)
  • Dkim (1)
  • Dmarc (1)
  • Dns (2)
  • Domain (1)
  • Domain Controller (1)
  • Domain Security (1)
  • Domain-Management (1)
  • Download (2)
  • Drivers (1)
  • Drives (1)
  • Education (1)
  • Email (1)
  • Email Management (1)
  • Email Security (2)
  • Email-Archiving (1)
  • Events (1)
  • Exchange (2)
  • Exchange-Management (1)
  • Exchange-Online (2)
  • ExchangeOnlineManagement (3)
  • Ffmpeg (4)
  • Fibonacci (1)
  • File-Permissions (1)
  • File-System (1)
  • Film (1)
  • Filtering (1)
  • Finance (1)
  • Firewall (1)
  • Flask (1)
  • Fractal (3)
  • Frame Interpolation (1)
  • Gal (1)
  • Gmail (1)
  • Google Forms (1)
  • Google-Apps-Script (1)
  • Google-Drive (1)
  • Gpu (1)
  • Graphs (1)
  • Group (1)
  • Group Management (1)
  • Group-Policy (1)
  • Gsuite (1)
  • Hacked Accounts (1)
  • Hardware (1)
  • Hex Encoding (1)
  • Iis (1)
  • Image-Processing (4)
  • Images (3)
  • Incident Response (1)
  • Insertion Sort (1)
  • Installation (1)
  • Interactive (9)
  • Ip-Address (1)
  • Ip-Addressing (1)
  • Java (1)
  • Javascript (5)
  • Juno (1)
  • Jupiter (1)
  • K-Means (1)
  • Kattis (6)
  • Keyboard (1)
  • Knowledge-Graphs (1)
  • Kruskal's Algorithm (1)
  • Lan (1)
  • Llm (2)
  • Local Administrator (1)
  • Local-Ai (2)
  • Logging (1)
  • Lorenz System (1)
  • M365 (3)
  • Machine-Learning (6)
  • Maximum Flow (1)
  • Media Processing (1)
  • Merge Sort (1)
  • Microsoft Graph (1)
  • Microsoft Teams (1)
  • Microsoft-Office (1)
  • Midas (1)
  • Minimum Spanning Tree (2)
  • Mistral-7b (1)
  • Monitoring (1)
  • Moondream (2)
  • Multilingual (1)
  • Mx (1)
  • N-Central (1)
  • Natural Language Processing (1)
  • Net (2)
  • Netsh (2)
  • Network (1)
  • Network Drives (1)
  • Network-Analysis (1)
  • Network-Security (2)
  • Networking (5)
  • Networkx (1)
  • Nlp (1)
  • Nslookup (1)
  • Obfuscation (1)
  • Office-365 (2)
  • Office365 (1)
  • Officec2rclient (1)
  • Open Simplex Noise (3)
  • Openai (1)
  • Optimization (1)
  • P5.js (2)
  • P5js (1)
  • Password Management (2)
  • Password-Generator (1)
  • Passwords (2)
  • Perlin Noise (1)
  • Permissions (2)
  • Phishing (1)
  • Photo-Editing (1)
  • Pil (1)
  • Pillow (1)
  • Port-Management (1)
  • PowerShell (23)
  • Prim's Algorithm (1)
  • Prime Numbers (3)
  • Printers (1)
  • Procdump (1)
  • Processing (2)
  • Programming (2)
  • Python (15)
  • Python-Script (1)
  • Pyvis (2)
  • Qr-Code (1)
  • Rdp (1)
  • Reference (1)
  • Registry Modification (1)
  • Remote-Access (1)
  • Reporting (1)
  • Reports (3)
  • Robocopy (1)
  • Screen Recording (1)
  • Scripting (1)
  • SDK (1)
  • Security (10)
  • Security Analysis (1)
  • Security Management (1)
  • Settings (1)
  • Shell (4)
  • SID (1)
  • SMTP (2)
  • Sorting (3)
  • Sound (1)
  • Space (1)
  • Speech Recognition (1)
  • Spf (1)
  • Spiral (1)
  • Stable-Diffusion (2)
  • Stocks (1)
  • String (1)
  • Stub (1)
  • Subnets (1)
  • Synchronization (1)
  • Sysinternals (1)
  • System-Administration (13)
  • Systeminfo (1)
  • Team Management (1)
  • Team Ownership (1)
  • Tensorflow (1)
  • Therafit (1)
  • Time (1)
  • Topological Sort (1)
  • Troubleshooting (4)
  • Tzutil (1)
  • UDM (1)
  • Uri (1)
  • Uri Encoding (1)
  • User-Management (4)
  • Uva (9)
  • VBScript (1)
  • Version-Management (1)
  • Video (5)
  • Video Conversion (1)
  • Visualization (3)
  • Web-Administration (1)
  • Web-Development (1)
  • Wifi (1)
  • Win32_OperatingSystem (1)
  • Windbg (1)
  • Windows (17)
  • Windows 10 (1)
  • Windows 11 (1)
  • Windows-Defender (1)
  • Windows-Server (1)
  • Windows-Update (1)
  • Wmic (1)
  • Youtube-Dl (1)
  • Yt-Dlp (2)

© 2025 Ghostfeed theme by Tristan Madden. All rights reserved.