Add files via upload

This commit is contained in:
satishsinghi-gh
2026-07-29 00:47:40 +01:00
committed by GitHub
parent 8c41d71b5e
commit 2015cd4cf2
3 changed files with 23088 additions and 10 deletions
+78 -7
View File
@@ -563,7 +563,7 @@
<body>
<nav>
<div class="container">
<div class="logo">MDM-ODA</div><span style="color:#5DC98B;font-size:0.75rem;font-weight:500;margin-left:0.5rem;">v0.81</span>
<div class="logo">MDM-ODA</div><span style="color:#5DC98B;font-size:0.75rem;font-weight:500;margin-left:0.5rem;">v0.816</span>
</div>
</nav>
@@ -571,7 +571,7 @@
<div class="container">
<div class="hero-badge">Intune & Entra ID Automation</div>
<h1>MDM On-Demand Actions <span style="color:#FFD700;font-size:0.85em;">&#x26A1;</span></h1>
<p>Live Analytics, Insights & Actions</p><p style="font-size:0.9rem;opacity:0.85;margin-top:0.5rem;">Version 0.81</p>
<p>Live Analytics, Insights & Actions</p><p style="font-size:0.9rem;opacity:0.85;margin-top:0.5rem;">Version 0.816</p>
<div class="hero-meta">
Written by <a href="https://www.linkedin.com/in/satish-singhi-791163167/">Satish Singhi</a> — July 2026 |
<a href="https://github.com/satishsinghi-gh/mdm-oda">GitHub Repository</a>
@@ -594,7 +594,7 @@
<li><a href="#safeguards">Safety, Validation & Auth Design</a></li>
<li><a href="#getting-started">Getting Started</a></li>
<li><a href="#roadmap">Roadmap</a></li>
<li><a href="#changelog">Changelog — V0.81</a></li>
<li><a href="#changelog">Changelog — V0.816</a></li>
</ol>
</div>
@@ -722,7 +722,7 @@
<h3>Device Info</h3>
<p>
Comprehensive User & Device info from Entra & Intune based on UPNs, Serial Numbers, Object IDs and even User/Device Groups (recursive object detection). Uses filters for Platform & Ownership. Shows 30+ fields including Entra/Intune device details, OS info, ownership, activity ranges, Autopilot status, and user info.
Comprehensive User & Device info from Entra & Intune based on UPNs, Serial Numbers, Object IDs and even User/Device Groups (recursive object detection). Uses filters for Platform & Ownership. Shows 30+ fields including Entra/Intune device details, OS info, ownership, activity ranges, Autopilot status, and user info. Filters now also include <strong>Intune Enrolled only</strong> (honored by both Get Device Info and Get All Device Info), Manufacturer/Model and Compliance; inputs accept both Entra Device IDs and Entra Device Object IDs; and with Platform/Ownership filters set, Get All Device Info enumerates server-side so only matching devices are queried.
</p>
<figure>
<img src="device-info.png" alt="Device Info interface">
@@ -815,7 +815,7 @@
<h3>Bulk Autopilot Registration <span style="display:inline-block;background:#10b981;color:white;font-size:0.65em;padding:2px 8px;border-radius:10px;vertical-align:middle;margin-left:8px;">NEW in V0.81</span></h3>
<p>
Register devices to Windows Autopilot in bulk from hardware hash CSV files (Get-WindowsAutopilotInfo format: Device Serial Number, Windows Product ID, Hardware Hash, optional Group Tag). Select CSVs from this PC (multi-select) or from an Azure Blob container via a SAS URL. A Group Tag inside a CSV wins; the typed Group Tag fills the blanks. The workflow is staged and safe: select the source, click <strong>Bulk Register</strong>, review the validation summary &mdash; blank serials, invalid hashes and duplicate serials are flagged and skipped &mdash; then explicitly confirm. Each device posts with real HTTP status reporting, and a single Autopilot sync is triggered after the batch. Import-only: existing Autopilot registrations are never modified.
Register devices to Windows Autopilot in bulk from hardware hash CSV files (Get-WindowsAutopilotInfo format: Device Serial Number, Windows Product ID, Hardware Hash, optional Group Tag). Select CSVs from this PC (multi-select) or from an Azure Blob container via a SAS URL. <strong>Optional mapping sheet:</strong> attach a CSV or XLSX with Serial Number + Group Tag columns and mixed hashes destined for multiple Group Tags can live together in one folder or container &mdash; every serial receives its correct tag automatically (mapping wins; CSV tag column next; the typed tag fills blanks), eliminating manual segregation and repeated uploads. The validation workflow also checks the tenant and flags serials <strong>already registered in Autopilot</strong> with their current Group Tag &mdash; those are skipped rather than re-posted. Staged and safe: select the source, click <strong>Bulk Register</strong>, review the validation summary &mdash; blank serials, invalid hashes, duplicates, unmapped and already-registered serials are all flagged &mdash; then explicitly confirm. Per-device results (Registered / Failed / Skipped - Already Registered / Skipped - No Mapping), and a single Autopilot sync is triggered after the batch. Import-only: existing Autopilot registrations are never modified.
</p>
<figure>
<img src="bulk-autopilot-registration.png" alt="Bulk Autopilot Registration interface">
@@ -830,6 +830,24 @@
<img src="get-autopilot-status.png" alt="Get Autopilot Status interface">
<figcaption>Autopilot registration and Intune enrollment at a glance</figcaption>
</figure>
<h3>Autopilot De-Registration <span style="display:inline-block;background:#10b981;color:white;font-size:0.65em;padding:2px 8px;border-radius:10px;vertical-align:middle;margin-left:8px;">NEW in V0.816</span></h3>
<p>
Removes devices from Windows Autopilot &mdash; the Autopilot identity only; Intune enrollment and the Entra device object are never touched. Input UPNs, device names, serial numbers, Entra Device/Object IDs, Intune Device IDs, or Groups. The workflow is backup-first: choose a mandatory backup target (local folder or Azure Blob SAS), then review a categorized summary &mdash; devices still enrolled in Intune are flagged <strong>CAUTION</strong>, devices not registered in Autopilot are informational, and registered non-enrolled devices are safe. When enrolled devices are present the confirmation offers <strong>Proceed Anyway / Skip Intune Enrolled Devices / Cancel</strong>. A full Get Device Info property backup (plus a Result column) is written BEFORE anything is removed &mdash; if the backup fails, nothing is de-registered. Non-Windows and Personal-owned devices are skipped automatically, and resolution uses precise per-device lookups rather than tenant-wide scans.
</p>
<figure>
<img src="autopilot-deregistration.png" alt="Autopilot De-Registration interface">
<figcaption>Backup-first Autopilot removal with categorized review and enrollment safeguards</figcaption>
</figure>
<h3>Bulk Device Removal <span style="display:inline-block;background:#10b981;color:white;font-size:0.65em;padding:2px 8px;border-radius:10px;vertical-align:middle;margin-left:8px;">NEW in V0.816</span></h3>
<p>
Deletes devices from Intune OR from Entra &mdash; two deliberately separate actions, never both at once. Inputs are ID-based only (Entra Device IDs, Entra Device Object IDs, Intune Device IDs) with Platform, Ownership and Intune Enrolled filters. A mandatory <strong>validation group</strong> gates everything: the delete buttons stay disabled until a group is selected, and only its <em>direct members</em> are ever deleted &mdash; every other input is skipped and flagged with a reason. Both actions require a device-info backup (full Get Device Info properties + Result column) to a local folder or Azure Blob BEFORE deletion: no backup, no delete. <strong>Delete from Entra</strong> adds two more safeguards: devices still enrolled in Intune are auto-skipped with no override, and each device&#39;s BitLocker recovery keys are backed up to Azure Key Vault first (secret Name = Key ID, Content Type = device name; only Key IDs are ever logged) &mdash; a device whose key backup fails is not deleted.
</p>
<figure>
<img src="bulk-device-removal.png" alt="Bulk Device Removal interface">
<figcaption>Validation-group-gated deletion with mandatory backups and BitLocker key escrow to Key Vault</figcaption>
</figure>
</section>
<section id="productivity">
@@ -929,6 +947,15 @@
<img src="prereq-handling-2.png" alt="Prerequisite Check and Installation - Part 2">
<figcaption>Installation progress and status reporting</figcaption>
</figure>
<p style="margin-top:0.75rem;">Module handling follows a strict policy: every module install or update happens in the launch prerequisite workflow with explicit consent &mdash; never in the middle of an operation &mdash; and older versions of a module are removed automatically after an install or update. After module changes the tool relaunches in a fresh session so the updated modules load cleanly.</p>
<figure>
<img src="prereq-modules-consent.png" alt="Module installation consent">
<figcaption>Explicit consent before any module install or update</figcaption>
</figure>
<figure>
<img src="prereq-relaunch.png" alt="Relaunch notification">
<figcaption>Fresh-session relaunch after module changes; older versions removed automatically</figcaption>
</figure>
</section>
<section id="permissions">
@@ -1013,7 +1040,19 @@
</tr>
<tr>
<td><code>DeviceManagementServiceConfig.ReadWrite.All</code></td>
<td>Policy Import of classic Autopilot Deployment Profiles and Enrollment Status Pages; Bulk Autopilot Registration (hardware hash import)</td>
<td>Policy Import of classic Autopilot Deployment Profiles and Enrollment Status Pages; Bulk Autopilot Registration (hardware hash import); Autopilot De-Registration</td>
</tr>
<tr>
<td><code>DeviceManagementManagedDevices.ReadWrite.All</code></td>
<td>Bulk Device Removal &mdash; Delete from Intune</td>
</tr>
<tr>
<td><code>Device.ReadWrite.All</code></td>
<td>Bulk Device Removal &mdash; Delete from Entra</td>
</tr>
<tr>
<td><code>BitlockerKey.Read.All</code></td>
<td>Bulk Device Removal &mdash; BitLocker key backup to Key Vault before Entra deletion (plus Key Vault secret-set RBAC)</td>
</tr>
<tr>
<td><code>DeviceManagementManagedDevices.PrivilegedOperations.All</code></td>
@@ -1118,7 +1157,39 @@
</section>
<section id="changelog">
<h2>Changelog — V0.81</h2>
<h2>Changelog — V0.816</h2>
<h3>New Features</h3>
<h4>Autopilot De-Registration</h4>
<ul>
<li>Remove devices from Windows Autopilot (identity only — Intune and Entra objects untouched) with a mandatory pre-removal device-info backup (local or Blob)</li>
<li>Categorized validation: CAUTION (still Intune-enrolled) / informational (not in Autopilot) / safe — with Proceed Anyway / Skip Intune Enrolled / Cancel</li>
<li>Auto-skips non-Windows and Personal-owned devices; precise per-device lookups (no tenant-wide scans)</li>
</ul>
<h4>Bulk Device Removal</h4>
<ul>
<li>Two deliberately separate guarded actions: Delete from Intune, Delete from Entra</li>
<li>Mandatory validation group — only its direct members are ever deleted; mandatory device-info backup before deletion</li>
<li>Delete from Entra: auto-skips Intune-enrolled devices and backs up BitLocker recovery keys to Azure Key Vault first (Key IDs logged, never key material; no key backup = no deletion)</li>
</ul>
<h4>Bulk Autopilot Registration — mapping sheet</h4>
<ul>
<li>Optional CSV/XLSX mapping (Serial Number + Group Tag columns): mixed hashes for multiple Group Tags in one folder/Blob, each serial tagged correctly — no manual segregation</li>
<li>Validation flags serials already registered in Autopilot (with current tag) and skips them; results marked Registered / Skipped - Already Registered / Skipped - No Mapping</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>Get Device Info: "Intune Enrolled only" filter (Run + Run All); Entra Device IDs input type; server-side enumeration when Platform/Ownership filters are set</li>
<li>Module handling: installs/updates only in the launch prerequisite workflow with consent; older module versions removed automatically</li>
<li>Dual device-ID inputs everywhere — Entra Device ID or Object ID accepted, with automatic translation for Intune-bound queries</li>
<li>Serial matching: portal-parity contains fallback across all serial inputs (leading zeros, vendor prefixes/suffixes)</li>
</ul>
<h3>Previous Release — V0.81</h3>
<h3>New Features</h3>