[ A U T O P I L O T I M P O R T G U I C O M M U N I T Y ]

Register Windows devices with Autopilot from a window, not a console.

Autopilot v1 hardware hash and v2 Device Preparation identifiers — one self-contained PowerShell script that runs in OOBE.

Install Now GitHub
v1.3.0 · Windows PowerShell 5.1

Features

A ground-up rewrite, built around what actually goes wrong at the OOBE screen.

🖥️

v1 and v2 in One Window

A mode toggle that is not cosmetic — the hardware hash and Device Preparation paths are mutually exclusive in the engine, and the window reshapes itself for each.

💻

Device Preparation Ready

Imports a Manufacturer,Model,Serial identifier — no hardware hash, so it works on virtual machines. Ships its own restart controls, because the engine cannot provide them on this path.

📡

A Network Check That Works

26 documented Autopilot, Intune, Entra, TPM attestation, activation and update endpoints probed concurrently in about 0.4 s. Failures sort to the top; required in red, optional in amber.

Staged Progress, Real Cancel

Engine output is streamed into the window with staged progress and a working cancel button, instead of being thrown at a separate console window you cannot see.

♻️

Already-Registered, Handled

Update the group tag, delete and re-add, or assume new — chosen explicitly up front, so the engine never stalls on a hidden Read-Host prompt.

💾

Offline Export

Hardware hash CSV, device identifier CSV, partner CSV format and clipboard copies — captured on the device without ever touching your tenant.

🩺

Autopilot Diagnostics

Reads this machine's ESP and enrolment state from local event logs and the registry. Optionally sign in read-only to resolve app, policy and script GUIDs into display names.

👁️

Preview Command

Renders the exact engine invocation without running anything — useful for verifying behaviour, and for lifting straight into your own automation.

🔒

Signed Engine, Byte-Exact

Andrew Taylor's community script is vendored unmodified and embedded as base64 of its exact bytes, so its Authenticode signature survives. Verified at build time and again at runtime.

Which Mode?

The two registration paths take different inputs and target devices differently.

Autopilot v1

Hardware Hash

Uploads the 4K hardware hash to windowsAutopilotDeviceIdentities.

  • Group tag, assigned user and computer name all apply
  • Entra group membership and profile-assignment waiting apply
  • Requires administrator rights
  • Many virtual machines cannot produce a hash at all
Autopilot v2

Device Preparation

Imports a Manufacturer,Model,Serial identifier to importedDeviceIdentities.

  • No hardware hash needed, so it works on VMs
  • Devices are targeted by the Entra group on your Device Preparation policy
  • Group tag, assigned user, computer name and assignment waiting do not apply
  • Restart now button, or restart automatically after a clean import

Restart only once the device is a member of the Entra group targeted by your Device Preparation policy — otherwise it returns to OOBE before the policy can apply. If the machine cannot produce a hardware hash, the tool defaults to v2 and says why.

See It in Action

The Register page — mode toggle, registration details, and live engine output.

Register page in Autopilot v1 mode, showing the mode toggle, group tag, registration details and streamed engine output

Screenshots

Five pages, one window. Click any shot to enlarge.

Register page in Device Preparation mode, with the registration details card hidden and restart controls shown
Device Preparation Mode
Device page showing full hardware inventory and offline CSV export options
Device & Offline Export
Network check page showing a colour-coded grid of endpoint probe results with latency
Network Check
Advanced page with post-assignment actions, diagnostics, Windows Update and engine integrity verification
Advanced
Logs page showing the full session output including a formatted diagnostics timeline table
Logs — full session output, formatted

Quick Start

Two commands from the PowerShell Gallery.

Install
Install-Script -Name Get-WindowsAutopilotImportGUICommunity

Installs to C:\Program Files\WindowsPowerShell\Scripts, which is already on PATH.

Run
Get-WindowsAutopilotImportGUICommunity.ps1
Or run it straight from a USB stick, including in OOBE
# In OOBE, press Shift+F10 first. powershell.exe -ExecutionPolicy Bypass -File D:\Get-WindowsAutopilotImportGUICommunity.ps1

Everything is embedded in that one file — the window, the theme and the engine itself.

Run all of this in Windows PowerShell 5.1 (powershell.exe), not PowerShell 7 — the engine pins Microsoft.Graph.Authentication to 2.9.1 or lower. Launching from a PS7 terminal leaks its module path into child processes; the tool corrects for that, but 5.1 avoids the problem entirely.

Parameters

All optional — they pre-fill the window, they do not bypass it.

ParameterEffect
-Mode v1|v2Pre-selects the registration mode: hardware hash, or Device Preparation identifier.
-GroupTagPre-fills the group tag field. Applies to v1 only.
-AssignedUserPre-fills the assigned user UPN. Applies to v1 only.
-NoElevateSkips the automatic elevation prompt. The hardware hash cannot be read without administrator rights, so v1 will not work in this state.

Requirements

Short list, but each item is load-bearing.

Graph Permissions

Delegated scopes requested on first sign-in.

Registration

  • Device.ReadWrite.All
  • DeviceManagementManagedDevices.ReadWrite.All
  • DeviceManagementServiceConfig.ReadWrite.All
  • DeviceManagementScripts.ReadWrite.All
  • Group.ReadWrite.All
  • GroupMember.ReadWrite.All
  • The last two are requested only when adding the device to an Entra group.

Diagnostics (Optional)

  • DeviceManagementApps.Read.All
  • DeviceManagementConfiguration.Read.All
  • Diagnostics run entirely locally by default. These read-only scopes are requested only if you tick Resolve app and policy names from Intune, so the local read stays usable in OOBE with no sign-in and no browser prompt.

Credits

Standing on other people's work, and saying so.

Engine: get-windowsautopilotinfocommunity.ps1 and Get-AutopilotDiagnosticsCommunity.ps1 © Andrew S Taylor, MIT. Vendored unmodified — see vendor\VERSION.json for the pinned commit and checksums.

Original concept: AutoPilot_Import_GUI © 2023 Ugur Koc, MIT. This is a ground-up rewrite; no code from it is redistributed here.

The community script itself derives from Microsoft's Get-WindowsAutoPilotInfo by Michael Niehaus.