Windows Autopilot with Intune
Zero-touch Windows device provisioning โ from out-of-box experience to fully configured corporate device, without IT touching the hardware. Covers all 4 deployment modes, ESP configuration, and hybrid join.
๐ Overview & Requirements
โ Prerequisites
- Windows 10 1903+ or Windows 11
- Entra ID (Azure AD) with P1 license
- Microsoft Intune license
- Device hardware hash registered in Intune
- Internet connectivity during OOBE
- DNS resolution for Microsoft endpoints
๐ Required Network Endpoints
- *.microsoft.com / *.microsoftonline.com
- *.windows.net / *.manage.microsoft.com
- *.windowsupdate.com (Windows Update)
- devicedirectory.azure.com (device registration)
- enterpriseregistration.windows.net
| Mode | Join Type | Use Case | Internet Required |
|---|---|---|---|
| User-Driven (Entra Join) | Entra ID Join | Cloud-only organizations | Yes (OOBE) |
| Hybrid Entra Join | On-prem AD + Entra ID | Hybrid/on-prem environments | Yes + VPN/LoS |
| Self-Deploying | Entra ID (no user) | Kiosks, shared devices | Yes (TPM required) |
| Pre-Provisioning | Entra ID / Hybrid | Technician prep + user receive | Yes (both phases) |
๐ Device Registration
๐ Hardware Hash Collection
Method 1: OEM Direct (Recommended)
Purchase devices from an Autopilot-capable OEM (Dell, HP, Lenovo, Microsoft). OEM uploads hardware hash to Windows Autopilot via PKID.
Method 2: PowerShell Script
Run Get-WindowsAutoPilotInfo.ps1 on the device to export the hardware hash CSV and upload to Intune.
Method 3: Microsoft 365 admin center
Upload CSV directly via Intune admin center โ Devices โ Windows โ Enrollment โ Windows Autopilot โ Import.
๐ป PowerShell Hash Collection
# Install and run on target device
Install-Script -Name Get-WindowsAutoPilotInfo
# Export hash to CSV
Get-WindowsAutoPilotInfo -OutputFile "C:\autopilot.csv"
# Upload directly to Intune tenant
Get-WindowsAutoPilotInfo `
-Online `
-TenantId "your-tenant-id"
# Bulk collect from multiple devices via network
Get-WindowsAutoPilotInfo `
-ComputerName PC01, PC02, PC03 `
-OutputFile "C:\bulk_hashes.csv"
โณ Enrollment Status Page (ESP)
๐ What ESP Does
- Shows progress during OOBE and device setup
- Blocks user access until critical apps/policies apply
- Two phases: Device Setup and Account Setup
- Tracks: security policies, certificates, apps, scripts
- Blocks desktop until all tracked items complete
โ๏ธ ESP Configuration Tips
- Error timeout: Set to 60โ120 minutes (default 60)
- Allow users to reset: Enable for pilot; disable for production
- Block device use until installed: Enable for critical security apps
- Only track apps that are Required and assigned to the device
- Avoid tracking large apps (1GB+) โ they slow first login significantly
๐ ESP Phases Explained
๐ค User-Driven Mode (Entra Join)
โ๏ธ Cloud-Native User-Driven
- Device joins Entra ID directly (no on-prem AD)
- User authenticates during OOBE with corporate credentials
- Intune enrollment happens automatically after join
- Ideal for fully cloud-native organizations
- No VPN or line-of-sight to DC required
- Supports Hello for Business at first sign-in
๐ Enrollment Flow
๐ข Hybrid Entra Join
๐ง Additional Requirements
- On-prem AD domain with Hybrid Entra ID configured
- Intune Connector for AD installed on domain member server
- Connector server can reach both Intune and AD
- Device must reach DC during OOBE (VPN or on-site)
- Computer account created automatically in AD via connector
๐ Hybrid Enrollment Flow
โ๏ธ Self-Deploying Mode
๐ฅ๏ธ Use Cases
- Kiosk devices (single-app or multi-app)
- Shared workstations (no dedicated user)
- Meeting room devices
- Point-of-sale terminals
- Digital signage
๐ Requirements
- TPM 2.0 required (device attestation replaces user auth)
- Wi-Fi or Ethernet at OOBE (no user to enter credentials)
- ESP blocks device until fully configured
- No user account assigned during OOBE
- Autopilot profile: Device type = "Self-deploying"
๐ญ Pre-Provisioning (White Glove)
๐ญ Technician Phase
Technician powers on device
Press Windows key 5 times at OOBE to enter Pre-Provisioning mode.
Device Setup phase runs
ESP Device Setup phase installs all device-targeted apps, certs, and policies.
Reseal
Technician clicks "Reseal" โ device is shut down and sealed for shipping.
๐ค User Phase
User powers on device
Device already has all device-level apps/policies. Only user phase runs.
User authenticates
User signs in with Entra ID credentials. Account Setup phase installs user-targeted apps.
Desktop ready
Much faster than standard Autopilot โ device is already mostly configured.
๐๏ธ Autopilot Profiles
๐ Key Profile Settings
- Deployment mode: User-Driven / Self-Deploying
- Join to Azure AD as: Entra joined / Hybrid Entra joined
- EULA: Hide (recommended for corporate)
- Privacy settings: Hide
- Account change options: Hide
- User account type: Standard (not Administrator)
๐ท๏ธ Profile Assignment
- Assign profile to Autopilot device group
- Dynamic group using
device.devicePhysicalIds any _ -eq "[ZTDId]" - Or assign to static group of uploaded devices
- Profile priority matters if multiple profiles exist
- Profile must be assigned BEFORE device first boot
๐ Dynamic Groups for Autopilot
# Dynamic group rule: All Autopilot-registered devices
(device.devicePhysicalIds -any _ -contains "[ZTDId]")
# Dynamic group rule: Autopilot devices with specific OrderID (group tag)
(device.devicePhysicalIds -any _ -eq "[OrderID]:Finance-2026")
# Dynamic group rule: Specific model
(device.devicePhysicalIds -any _ -eq "[ZTDID]") and
(device.deviceModel -eq "Surface Laptop 5")
# PowerShell: Add group tag to Autopilot device
$deviceId = "autopilot-device-id"
Update-MgDeviceManagementWindowsAutopilotDeviceIdentity `
-WindowsAutopilotDeviceIdentityId $deviceId `
-GroupTag "Finance-2026"
๐ Reports & Monitoring
๐ Autopilot Deployments
- Intune โ Devices โ Monitor โ Autopilot deployments
- Success / Failure per device
- Time to complete each phase
- Error codes for failed deployments
๐ฑ Device Registration
- Intune โ Devices โ Windows โ Enrollment โ Devices
- List of all registered Autopilot devices
- Profile assignment status
- Group tag / order ID
โณ ESP Status
- Enrollment Status Page report
- Per-app installation progress
- Policy application status
- Failure reason detail
๐ง Troubleshooting
โ Common Issues & Fixes
| Issue | Likely Cause | Resolution |
|---|---|---|
| Device not getting Autopilot profile | Hardware hash not synced or group assignment missing | Force sync in Intune; verify dynamic group membership |
| ESP stuck at "Identifying" | Network connectivity issue, missing endpoints | Check firewall/proxy for required URLs |
| Hybrid join fails | Connector not running, DC unreachable | Check Intune Connector service; ensure DC reachable during OOBE |
| App installation fails in ESP | App not assigned as Required to device/user | Reassign app as Required to Autopilot device group |
| ESP timeout | Large app slowing provisioning | Increase timeout; exclude non-critical apps from ESP tracking |
| "Something went wrong" error 0x800705b4 | Duplicate device hash or stale enrollment | Delete device from Autopilot, re-upload hash, retry |
๐ป PowerShell & Graph API
# Get all Autopilot devices
Connect-MgGraph -Scopes "DeviceManagementServiceConfig.Read.All"
Get-MgDeviceManagementWindowsAutopilotDeviceIdentity |
Select-Object SerialNumber, Model, GroupTag, EnrollmentState
# Get Autopilot deployment report
GET https://graph.microsoft.com/beta/deviceManagement/autopilotEvents
# Assign group tag to multiple devices from CSV
$devices = Import-Csv "C:\devices.csv" # Columns: SerialNumber, GroupTag
foreach ($device in $devices) {
$autopilotDevice = Get-MgDeviceManagementWindowsAutopilotDeviceIdentity |
Where-Object { $_.SerialNumber -eq $device.SerialNumber }
if ($autopilotDevice) {
Update-MgDeviceManagementWindowsAutopilotDeviceIdentity `
-WindowsAutopilotDeviceIdentityId $autopilotDevice.Id `
-GroupTag $device.GroupTag
}
}
# Delete Autopilot device registration (for re-registration)
Remove-MgDeviceManagementWindowsAutopilotDeviceIdentity `
-WindowsAutopilotDeviceIdentityId "device-guid-here"
โ Implementation Checklist
๐๏ธ Prerequisites
- Entra ID configured (P1 license)
- Intune license assigned to users
- MDM auto-enrollment configured in Entra ID
- Required network endpoints whitelisted
- OEM or manual hardware hash collection ready
๐ Autopilot Setup
- Hardware hashes uploaded to Intune
- Autopilot profile created for each mode
- Dynamic device groups created with ZTDId rule
- Profile assigned to device groups
- ESP configured with appropriate timeout
๐ฆ Apps & Policies
- Critical apps assigned as Required to Autopilot group
- Security baseline assigned to device group
- Certificates (Root, SCEP) assigned to device group
- Wi-Fi and VPN profiles assigned
- Compliance policy assigned
๐งช Testing & Rollout
- Pilot with 2โ3 test devices completed
- End-to-end OOBE flow verified
- ESP completion time measured and acceptable
- Helpdesk trained on Autopilot reset procedure
- OEM ordering process updated to include Autopilot registration