To register a device with Windows Autopilot, you need to extract its hardware hash — a unique fingerprint built from device-specific identifiers such as the TPM, CPU, BIOS, and network adapters — and upload it to your Intune tenant. This guide covers every method available in 2026, including what has changed with the introduction of Autopilot v2 (Device Preparation).
| Detail | |
|---|---|
| Last Updated | March 2026 |
| Applies To | Windows 10 (20H2+), Windows 11, Microsoft Intune |
| Autopilot Version | Autopilot v1 (classic) — see note on v2 below |
| Difficulty | Beginner |
Autopilot v1 vs v2 — Do You Still Need a Hardware Hash?
Before jumping into extraction methods, it is worth understanding where hardware hashes fit in 2026. Microsoft released Windows Autopilot Device Preparation (v2) in mid-2024, and it fundamentally changes registration: v2 does not require a hardware hash at all. Devices enroll simply by the user signing in with their work account during OOBE — no pre-registration needed.
However, hardware hash extraction remains relevant for classic Autopilot (v1), which is still widely used and is the only option for:
- Hybrid Entra ID joined deployments (v2 is cloud-only / Entra joined)
- Self-deploying mode (kiosk, shared devices)
- Pre-provisioning (white glove) scenarios
- Environments where OEM registration is not available and v2 is not yet rolled out
If you are starting fresh and your environment supports it, evaluate v2 first. If you are on classic Autopilot — read on.
Method 1: Extract During OOBE (Fresh Device)
This is the most common scenario — a brand new device or one being reimaged, where you need to register it before the user receives it. After the first boot, when you reach the language/region selection screen, open a command prompt with SHIFT + F10 (on a VM use SHIFT + FN + F10, or use the on-screen keyboard). Type powershell and press Enter, then run:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted
Install-Script -Name Get-WindowsAutoPilotInfo
Get-WindowsAutoPilotInfo.ps1 -OutputFile C:\AutoPilotHWID.csv
Confirm all prompts during script download. The CSV will be saved to C:\AutoPilotHWID.csv. You can redirect the output to a USB drive by changing the path — for example -OutputFile D:\AutoPilotHWID.csv — which makes it easy to transfer to another machine for upload.
Method 2: Register Directly to Intune (Online Mode)
If you have internet access and Intune admin credentials available, you can skip the CSV entirely and register the device directly to your tenant in one step:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted
Install-Script -Name Get-WindowsAutoPilotInfo
Get-WindowsAutoPilotInfo.ps1 -Online
You will be prompted to sign in with your Intune Administrator or Global Administrator credentials and complete MFA. Once authenticated, the device hash is uploaded directly and the device appears under Windows enrollment > Devices in the Intune portal within a few minutes.
Method 3: Extract from an Already-Deployed Device
If the device already has a working Windows installation and you need to retroactively register it for Autopilot, run PowerShell as Administrator from within the OS:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Script -Name Get-WindowsAutoPilotInfo -Force
Get-WindowsAutoPilotInfo.ps1 -OutputFile C:\AutoPilotHWID.csv
Method 4: Bulk Extract via SCCM / MECM
If you have SCCM co-management configured, you do not need to touch each device individually. In the MECM console, go to Assets and Compliance > Devices, select the target device collection, right-click and choose Convert to Autopilot. MECM fetches the hardware hashes from its inventory data and pushes them directly to Intune.

For bulk extraction without the Convert to Autopilot feature, deploy the following script as a SCCM script or package to the collection:
# Run on each device, output to a shared UNC path
$outputPath = "\\server\share\AutopilotHashes\$env:COMPUTERNAME.csv"
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Script -Name Get-WindowsAutoPilotInfo -Force
Get-WindowsAutoPilotInfo.ps1 -OutputFile $outputPath
Collect all the individual CSV files and merge them before uploading to Intune. You can merge them with a simple PowerShell one-liner:
# Merge all CSV files in a folder into one
$csvFiles = Get-ChildItem -Path "\\server\share\AutopilotHashes\" -Filter "*.csv"
$merged = $csvFiles | ForEach-Object { Import-Csv $_.FullName }
$merged | Export-Csv -Path "C:\MergedAutoPilotHWIDs.csv" -NoTypeInformation
Adding a Group Tag
Group tags let you automatically assign Autopilot deployment profiles to devices via dynamic Entra ID groups. You can add a group tag at extraction time using the -GroupTag parameter:
# Extract with group tag — direct upload to Intune
Get-WindowsAutoPilotInfo.ps1 -Online -GroupTag "CorporateLaptop"
# Or export to CSV with group tag included
Get-WindowsAutoPilotInfo.ps1 -OutputFile C:\AutoPilotHWID.csv -GroupTag "CorporateLaptop"
If you have already exported a CSV without a group tag, you can add it manually by opening the file and adding a Group Tag column with the desired value.
Uploading the CSV to Intune
- Go to Intune admin center → Devices → Enrollment → Windows Autopilot devices
- Click Import
- Browse to your CSV file and click Import
- Wait for the import to complete — this typically takes 5–15 minutes
- The device will appear in the Autopilot devices list once processed
- Assign an Autopilot deployment profile to the device or its group
Under Profile status, wait until the status changes from Pending to Assigned before proceeding with device provisioning.
Quality Updates During OOBE — What Changed in 2026
As of the January 2026 Windows security update, devices running Windows 11 22H2 or later will install quality updates by default during OOBE as part of Autopilot provisioning. This adds 20–40 minutes to the provisioning process and may trigger a restart. You can control this behaviour via a new setting in the Enrollment Status Page (ESP) profile:
- Navigate to Devices → Enrollment → Windows → Enrollment Status Page
- Edit your ESP profile and find the setting Install Windows quality updates (might restart the device)
- Set to No if you want to suppress quality updates during OOBE provisioning
To ensure update deferral and pause settings from your Windows Update rings policy are respected during OOBE, assign both the ESP profile and the Update rings policy to the same Autopilot-registered device group.
Troubleshooting Common Issues
| Issue | Cause | Fix |
|---|---|---|
| Script download fails during OOBE | No internet access | Connect to network first; check if OOBE Wi-Fi prompt was completed |
| NuGet provider install prompt loops | ExecutionPolicy not set | Run Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted first |
| Device does not appear after CSV import | Import still processing | Wait 15 minutes and refresh; check for import errors in the Autopilot devices blade |
| Profile status stays “Pending” | No profile assigned | Assign an Autopilot deployment profile to the device or its dynamic group |
| Hash already registered error | Device registered in another tenant | The previous tenant must delete the device from their Autopilot devices first |
Summary
Hardware hash extraction remains the standard registration method for classic Windows Autopilot (v1) deployments in 2026. The Get-WindowsAutoPilotInfo script covers all scenarios — OOBE, existing OS, and bulk extraction via SCCM. If you are building a new Autopilot deployment from scratch, evaluate whether Autopilot v2 (Device Preparation) fits your environment first, as it eliminates the hash extraction step entirely for cloud-joined scenarios.
- Use
-Onlinefor direct registration to Intune during OOBE - Use
-OutputFileto export a CSV for later upload or bulk merging - Add
-GroupTagto automatically assign profiles via dynamic groups - Review ESP quality update settings if provisioning time has increased unexpectedly after January 2026
