HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotIntuneMDMTroubleshootingPowerShellDiagnosticsESPOOBE

Windows Autopilot MDM Log Collection: Complete Troubleshooting Reference

IA
Imran Awan
7 August 2026

The problem: stuck in OOBE or ESP with no error on screen

A device powers on, hits the Windows out-of-box experience or the Enrollment Status Page, and stops. No helpful error message. No progress. The admin is staring at a blue screen with a spinner, or at an ESP page that has been counting down for 45 minutes. The fix is almost always in the logs — but those logs are not in an obvious place, and in OOBE they disappear the moment the device reboots.

This post is the single reference for every log collection method across every Autopilot scenario. It covers the commands, what’s inside the collected files, every registry key the MDM stack writes, every Autopilot event ID, every error code, and the system binaries involved. An IT engineer who has never opened an MDM diagnostic cab before should be able to follow this from start to finish and know exactly what went wrong.

Warning: During OOBE, run MdmDiagnosticsTool.exe before the device reboots. The OOBE session logs do not persist across reboots — they are gone the moment the machine restarts. Collect first, investigate second.
Watch this post — YouTube walkthrough

Watch on YouTube · Subscribe at @EndpointWeekly

How the MDM log pipeline works

Two tools are involved and they are often confused with each other. They do different things:

MdmDiagnosticsTool.exe is a collection tool. It snapshots the current MDM state — registry values, event logs, ETL traces, policy summaries — and packages everything into a cab or zip file. You run it on the broken device to get the data out.

Get-AutopilotDiagnostics is an analysis tool. It reads an existing cab file and produces a human-readable summary of what it finds. You run it on your admin workstation after you have the cab.

The workflow is always: collect with MdmDiagnosticsTool.exe → transfer the cab → analyse with Get-AutopilotDiagnostics or open the files directly.

Note: The -area flag in MdmDiagnosticsTool.exe accepts semicolon-separated values. Combining all four areas — Autopilot;TPM;DeviceProvisioning;DeviceEnrollment — in one command creates a single cab file with everything Microsoft Support needs. Always use the combined command unless you are running in a constrained OOBE environment.

Quick reference: which command to run

Jump to the row that matches your situation. Every command below is expanded in detail in the sections that follow.

ScenarioCommand / Method
Device stuck in OOBE — blue screen, Shift+F10MdmDiagnosticsTool.exe -area Autopilot;TPM;DeviceProvisioning;DeviceEnrollment -cab C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab
Enrolled device — collect all areas from admin CMDSame command as above, elevated CMD
Enrolled device — Settings UI (no command line)Settings › Accounts › Access work or school › Export your management log files
Self-deploying / White Glove / physical deviceMdmDiagnosticsTool.exe -area Autopilot;TPM -cab output.cab
Runtime provisioning failureMdmDiagnosticsTool.exe -area DeviceProvisioning -cab output.cab
Analyse a collected cab (read and decode)Get-AutopilotDiagnostics -AllSessions -CABFile .\mdmlogs.cab
Register a new device / collect hardware hashGet-WindowsAutoPilotInfo -OutputFile AutoPilotHWID.csv
Windows 10 earlier than 1809 (legacy)licensingdiag.exe
Remote collection via Intune Admin CenterDevices › [Device] › Collect diagnostics

Method 1: MdmDiagnosticsTool.exe — all variants

MdmDiagnosticsTool.exe is built into Windows 10 version 1809 and later at %windir%\System32\MdmDiagnosticsTool.exe. It must be run as Administrator. During OOBE, the Shift+F10 command prompt is already elevated.

Combined command (recommended — use this in all cases)

Command Prompt (Administrator)
C:\> MdmDiagnosticsTool.exe -area Autopilot;TPM;DeviceProvisioning;DeviceEnrollment -cab C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab

Collection started...
Area: Autopilot        … complete
Area: TPM              … complete
Area: DeviceProvisioning … complete
Area: DeviceEnrollment … complete
Cab file created: C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab

Per-area variants (if you only need one area)

Command Prompt (Administrator)
# Autopilot profile and enrollment logs only
MdmDiagnosticsTool.exe -area Autopilot -cab C:\MDM\Autopilot.cab

# TPM attestation logs (required for self-deploying / White Glove)
MdmDiagnosticsTool.exe -area TPM -cab C:\MDM\TPM.cab

# Runtime provisioning (provisioning packages, multivariant conditions)
MdmDiagnosticsTool.exe -area DeviceProvisioning -cab C:\MDM\DeviceProvisioning.cab

# MDM enrollment logs
MdmDiagnosticsTool.exe -area DeviceEnrollment -cab C:\MDM\DeviceEnrollment.cab

# ZIP output (equivalent to the Settings UI export)
MdmDiagnosticsTool.exe -area "DeviceEnrollment;DeviceProvisioning;Autopilot" -zip "C:\Users\Public\Documents\MDMDiagReport.zip"

What is inside the CAB file

Extract the cab with any archive tool (right-click › Extract All in Windows Explorer, or expand -F:* MDMDiagReport.cab .\output\). Start with the files in priority order — the registry dump resolves most ESP problems without needing to open the ETL traces.

FileWhat it containsStart here?
MdmDiagReport_RegistryDump.regDump of all MDM-relevant registry keys. Search for InstallationState = 4 to find the Win32 app blocking ESP. Also contains the full Autopilot profile settings (AadTenantId, TenantMatched, IsAutopilotDisabled) and ESP tracking keys.Yes — open first
MDMDiagHtmlReport.htmlSummary report: management server URL, MDM device ID, enrolled certificates, applied policies. Open in a browser for a quick health check.Yes — open second
MDMDiagReport.xmlDetailed enrollment variables, provisioning packages, multivariant conditions. Required for complex provisioning package failures.If provisioning package used
*.evtxEvent log exports. Primary: microsoft-windows-devicemanagement-enterprise-diagnostics-provider-admin.evtx. Open with Event Viewer (eventvwr.msc).For event ID analysis
DiagnosticLogCSP_Collector_Autopilot_*ETL trace from the Autopilot ETW provider. View with Windows Performance Analyzer.For deep Autopilot trace
DiagnosticLogCSP_Collector_DeviceProvisioning_*ETL trace from Microsoft-Windows-Provisioning-Diagnostics-Provider.For provisioning trace
MdmDiagLogMetadata.jsonRecords the command-line arguments used when MdmDiagnosticsTool.exe was run.Reference only
MdmLogCollectorFootPrint.txtThe tool’s own run log. Check here if the cab appears empty or incomplete.If cab looks wrong
Gotcha: The .evtx and ETL files are binary — they are not readable in a text editor. Open EVTX files with Event Viewer (eventvwr.msc › Action › Open Saved Log). Open ETL files with Windows Performance Analyzer (WPA) or tracerpt. The HTML and registry dump are plain text and can be opened immediately.

Method 2: Get-AutopilotDiagnostics — decode the cab

Get-AutopilotDiagnostics reads a cab file collected by MdmDiagnosticsTool.exe and produces a human-readable summary of every Autopilot session, policy, app, and error code. It is the fastest way to get from raw cab to “here is what went wrong”.

Run this on your admin workstation after transferring the cab from the target device.

PowerShell (Administrator)
# Step 1 — set execution policy for this session if not already set
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

# Step 2 — install the script from PSGallery (one-time)
Install-Script -Name Get-AutopilotDiagnostics -Force

# Step 3 — go to root so relative paths work
cd\

# Step 4 — Shift+right-click the cab → "Copy as path", paste after -CABFile
Get-AutopilotDiagnostics -AllSessions -CABFile .\mdmlogs1.cab

# Example with a full path (paste the copied path here)
Get-AutopilotDiagnostics -AllSessions -CABFile "C:\Users\ionutmarin\OneDrive\Intune\Cases\DiagLogs\mdmlogs1.cab"

--- Sample output ---
Autopilot profile settings:
  TenantMatched          : True
  AadTenantId            : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  IsAutopilotDisabled    : 0
Win32 app installation:
  CompanyPortal          : Installed (state 3)
  SalesForce CRM         : Error    (state 4)  <— ESP blocker
Gotcha: Set-ExecutionPolicy applies only to the current PowerShell session when using -Scope Process. If you open a new window, you need to set it again. If Get-AutopilotDiagnostics still refuses to run, the machine-level policy is overriding it — check Get-ExecutionPolicy -List and look for a MachinePolicy entry set to Restricted.

Method 3: Settings UI export (enrolled device)

The easiest method on a device that has successfully enrolled. No command line needed — any user with access to the work or school account settings can trigger the export.

Settings Accounts Access work or school Info Create report

Output path: C:\Users\Public\Documents\MDMDiagnostics\

The exported file is a zip containing the same files as MdmDiagnosticsTool.exe — registry dump, HTML report, EVTX event logs, and ETL traces. The zip is equivalent to running mdmdiagnosticstool.exe -area DeviceEnrollment;DeviceProvisioning;Autopilot -zip.

Note: This method only works on a device that has successfully enrolled in MDM. During OOBE (before enrollment completes), or on a device that failed enrollment, use MdmDiagnosticsTool.exe from a command prompt instead. The Settings path does not appear until the work or school account is connected.

Method 4: Intune Admin Center remote collection

For enrolled devices that are online, you can trigger log collection remotely from the Intune portal without touching the device or logging on locally.

INTUNE ADMIN CENTER
Devices › Windows › [Device name]
DESKTOP-CORP-001
📄 Collect diagnostics ✓ Enrolled

After clicking Collect diagnostics, Intune sends a remote command to the device. The device runs the MDM diagnostics collection automatically and uploads the result to Intune. Depending on the device’s check-in cycle this may take 15–30 minutes. Once complete, the cab appears in the device’s Diagnostics section and can be downloaded from the portal.

Gotcha: If the remote collection stalls, check that lgmsapeweu.blob.core.windows.net is reachable from the device. Corporate web proxies and firewalls that inspect HTTPS traffic sometimes block the upload endpoint. Add this URL to your proxy bypass list if collection fails silently.

Method 5: ESP “Collect logs” button and the Windows 11 diagnostics page

During the Enrollment Status Page, a Collect logs button appears if the ESP profile has “Turn on log collection and diagnostics page for end users” set to Yes. The button is visible to the end user (or technician) at the point of failure — no admin intervention required at the machine.

Clicking it lets the user copy the logs to a USB drive. The files are the same as a MdmDiagnosticsTool.exe collection.

On Windows 11 only, if the Autopilot diagnostics page is enabled, pressing CTRL+SHIFT+D at any point during ESP or OOBE opens a detailed diagnostics page showing every app, policy, and certificate deployment in real time — the most readable view available without any additional tools.

Note: The CTRL+SHIFT+D diagnostics page requires: Windows 11, user-driven mode, and a Work or School account sign-in. It is not available in self-deploying mode or on Windows 10. Enable it in the ESP profile under “Turn on log collection and diagnostics page for end users = Yes”.

Method 6: Hardware hash collection for device registration

Before a device can participate in Autopilot it must be registered — its hardware hash uploaded to the Intune admin center. The hardware hash is a unique fingerprint of the device’s hardware that cannot be spoofed. The Get-WindowsAutoPilotInfo script collects it from WMI and exports it to a CSV for import.

PowerShell (Administrator)
# Create a staging directory
New-Item -Type Directory -Path "C:\HWID"
Set-Location -Path "C:\HWID"

# Add the PowerShell scripts folder to the session PATH
$env:Path += ";C:\Program Files\WindowsPowerShell\Scripts"

# Allow script installation for this process
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

# Install the hash collection script from PSGallery (one-time)
Install-Script -Name Get-WindowsAutoPilotInfo

# Collect the hardware hash and export to CSV
Get-WindowsAutoPilotInfo -OutputFile AutoPilotHWID.csv

Hardware hash saved to: C:\HWID\AutoPilotHWID.csv
Import this file in: Intune › Devices › Windows › Enrollment › Autopilot › Devices › Import

After collecting the CSV, import it in Intune Admin Center › Devices › Windows › Enrollment › Windows Autopilot › Devices › Import. Allow up to 15 minutes for the device to appear and for Autopilot to sync the profile assignment.

If the CSV import fails with a Base64 error

Autopilot expects padded Base64. Devices occasionally export unpadded hashes. Validate the hash first:

PowerShell
# Paste the hash value from the CSV between the quotes below
[System.Text.Encoding]::ascii.getstring(
    [System.Convert]::FromBase64String("PASTE_HASH_HERE")
)

# If this throws "Invalid length for a Base-64 char array" —
# add one or two = characters at the end of the hash and retry the import
# Error in Intune: "Cannot convert the literal '[HASH]' to the expected type 'Edm.Binary'"

Registry keys: what the MDM stack writes and what to look for

The registry dump from the cab (MdmDiagReport_RegistryDump.reg) is the fastest path to diagnosing most Autopilot and ESP failures. Open it in Notepad and use Ctrl+F to search for the values below.

Autopilot profile settings

HKLM\SOFTWARE\Microsoft\Provisioning\Diagnostics\Autopilot

Value nameWhat to look for
IsAutopilotDisabled1 = device is not registered in Autopilot, OR the profile failed to download (network or firewall blocking the Autopilot service endpoint). 0 = profile downloaded successfully.
TenantMatched1 = the user’s Entra tenant matches the device’s registered tenant. 0 = mismatch — the user signed in with a different tenant than the device was registered to. The device forces a restart.
AadTenantIdThe Entra tenant GUID the user authenticated to. Compare with CloudAssignedTenantId. If they differ, TenantMatched will be 0.
CloudAssignedTenantIdThe Entra tenant GUID the device was registered to in Autopilot. Should match AadTenantId.
CloudAssignedTenantDomainThe onmicrosoft.com domain, e.g. contoso.onmicrosoft.com. Blank if the device is not registered.
CloudAssignedOobeConfigBitmap of OOBE settings from the Autopilot profile. Values: 1=SkipCortana, 2=NotLocalAdmin, 4=SkipExpressSettings, 8=SkipOemRegistration, 16=SkipEula. Add the values for your expected settings and compare.

ESP FirstSync settings

HKLM\SOFTWARE\Microsoft\Enrollments\{EnrollmentGUID}\FirstSync

Value nameMeaning
SkipUserStatusPage0xffffffff = the account setup phase (Phase 3) has been skipped via the DMClient CSP SkipUserStatusPage OMA-URI. Expected if your ESP profile skips the user phase.
SkipDeviceStatusPage0xffffffff = the device setup phase (Phase 2) has been skipped. Rarely intentional — verify your ESP profile settings if this is unexpected.

ESP Win32 app tracking — finding the blocker

HKLM\SOFTWARE\Microsoft\Windows\Autopilot\EnrollmentStatusTracking\Device\Setup\Apps\Tracking\Sidecar\

Registry Editor
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Autopilot\EnrollmentStatusTracking
↳ Device\Setup\Apps\Tracking\Sidecar\
↳ Win32App_{AppGUID_1}\
InstallationState REG_DWORD 0x00000003 (Completed ✓)
↳ Win32App_{AppGUID_2}\
InstallationState REG_DWORD 0x00000004 (Error — ESP halts here)

InstallationState values are universal across all ESP tracking subkeys:

ValueMeaning
1Not installed — waiting to start
2In progress — installation underway
3Completed — installed successfully
4Error — ESP halts at this app. Copy the Win32App_{GUID} from the key name and look it up in Intune › Apps › Windows to identify which application is failing.
Tip: In the RegistryDump.reg, press Ctrl+F and search for InstallationState then keep pressing F3 until you see the value dword:00000004. The parent key name (Win32App_{GUID}) is the app blocking ESP. Cross-reference the GUID with the Intune console under Apps › Windows apps to identify the failing deployment.

AutoAdminLogon conflict check

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value: AutoAdminLogon

If this value is set to 0, Autopilot breaks completely — the device cannot complete the autologon steps required during provisioning. This is sometimes set by imaging tools or security hardening scripts. If Autopilot fails at the very first OOBE screen, check this value before investigating anything else.

Event IDs: Autopilot channel reference

Event logs are in the Applications and Services Logs › Microsoft › Windows › ModernDeployment-Diagnostics-Provider › Autopilot channel in Event Viewer, or inside the EVTX file extracted from the diagnostic cab.

Event IDLevelMeaning
100WarningProfile not found — temporary. The device is waiting for the profile to download. If this persists and never transitions to Event 161, the device is not registered or cannot reach the Autopilot service endpoint.
101InfoNumeric OOBE policy retrieved successfully from the profile.
103InfoString OOBE policy retrieved (e.g. tenant domain name).
109InfoState-based OOBE setting retrieved from the profile.
111InfoAll Autopilot profile settings retrieved successfully. Normal operation — good sign.
153InfoState changed: ProfileState_UnknownProfileState_Available. The device is ready for Autopilot deployment.
160InfoProfile download started.
161InfoProfile downloaded successfully. OOBE will proceed with the Autopilot experience.
163InfoProfile already present on device — no download needed. This appears after imaging. Run sysprep /generalize to reset this state if needed.
164InfoInternet connection confirmed. Autopilot will now attempt profile download.
171ErrorTPM identity confirmation failed. Required for self-deploying and pre-provisioning (White Glove) modes. HRESULT code in the event details. Not required for user-driven mode.
172ErrorProfile could not be set as available. Usually a consequence of Event 171 (TPM failure). Resolve 171 first.
807ErrorZtdDeviceIsNotRegistered — the hardware hash is not in Intune, or no Autopilot profile has been assigned to this device. Register the device or assign a profile.
809ErrorZtdDeviceHasNoAssignedProfile — Assigned profile does not exist. The profile was deleted after the device was assigned to it. Re-assign a valid profile.
815ErrorNo Autopilot profile found in the tenant at all. Validate that the profile exists in Intune › Devices › Windows › Enrollment › Autopilot › Deployment profiles and is assigned to a group containing this device.
908ErrorSerial number or product key mismatch. The hardware in the Autopilot record does not match the physical device. Occurs after a motherboard replacement or if the wrong hash was uploaded. Delete and re-register the device.
⚠ Error — Event ID 171 — ModernDeployment-Diagnostics-Provider
Source: Microsoft-Windows-ModernDeployment-Diagnostics-Provider
Channel: Microsoft-Windows-ModernDeployment-Diagnostics-Provider/Autopilot
Message: AutopilotManager failed to set TPM identity confirmed. HRESULT=0x8028400E
Meaning: TPM attestation failure — required for self-deploying and pre-provisioning modes. Check TPM health in tpm.msc and verify the device supports TPM 2.0.

Error codes and common error messages

Error codeContextFix
0x80180014Re-enrollment failure. Prior enrollment record still exists in Autopilot for this device. ETW message: Enrollment blocked for AP device by SDM One Time Limit CheckIntune Admin Center › Devices › Windows › Enrollment › Windows Autopilot › Devices › select device › Unblock device
0x80180014 (alt)Windows MDM enrollment is disabled in the tenant.Intune › Devices › Enroll devices › Enrollment device platform restrictions › Windows restrictions › Allow MDM enrollment
0x80070774Hybrid Entra Join Autopilot — ESP failure. Domain mismatch between the Intune Connector for AD server and the target OU.Reinstall the ODJ Connector on a server that is in the same domain as the target OU.
80180018MDM enrollment failure. Missing Intune, EMS, or Microsoft 365 license. Or the user has reached the device enrollment limit.Verify license assignment in Entra admin center. Check user’s enrolled device count against the limit in Enrollment restrictions.
HTTP 400 on CSV importHardware hash has malformed or unpadded Base64. Error body: Cannot convert the literal ‘[DEVICEHASH]’ to the expected type ‘Edm.Binary’Validate hash with [System.Convert]::FromBase64String(‘HASH’) in PowerShell. Add = padding characters at the end until the decode succeeds.

Common verbatim error messages and what they mean

Message on screenRoot cause
“Something went wrong. Can’t connect to the URL of your organization’s MDM terms of use.”Missing or incorrect Intune/EMS/Microsoft 365 license on the user account. Assign the correct license in Entra.
“Another installation is in progress, please try again later.”TrustedInstaller (Windows Modules Installer) conflict — two MSI-based apps are trying to install simultaneously during ESP. See the TrustedInstaller section below.
“The MSA account couldn’t be granted permission to create computer objects in the following OUs.”Intune Connector for AD account does not have Create Computer Objects permission in the target OU. Grant the permission in Active Directory Users and Computers.
“Cannot start service ODJConnectorSvc on computer ‘.’.”Replication latency between DCs, or a Group Policy is preventing the service from starting. Wait 15 minutes and retry, or force AD replication with repadmin /syncall.
“Invalid length for a Base-64 char array or string.”Hardware hash padding error during CSV import or PowerShell validation. Add = padding to the hash.

System binaries and DLL files involved in Autopilot

Understanding which binary is responsible for each step helps when a failure message is cryptic or when a log references a component by name.

Binary / serviceLocationRole in Autopilot
MdmDiagnosticsTool.exe%windir%\System32\Primary MDM diagnostic log collection tool. Windows 10 1809 and later. Creates cab or zip output.
licensingdiag.exe%windir%\System32\Legacy MDM log collection. Windows 10 earlier than 1809 only. Replaced by MdmDiagnosticsTool.exe.
eventvwr.msc%windir%\System32\Event Viewer console. Opens EVTX files extracted from the diagnostic cab. Use File › Open Saved Log to load a specific EVTX.
shutdown.exe%windir%\System32\Used during OOBE via the Shift+F10 command prompt. shutdown /r /t 0 restarts immediately; shutdown /s /t 0 shuts down.
wlidsvc (Microsoft Sign-in Assistant)Windows ServiceCritical: Autopilot uses this service to download the Autopilot profile during OOBE. If disabled by a Security Baseline, hardening script, or Intune policy, the profile download silently fails and IsAutopilotDisabled = 1 appears in the registry. Check status in services.msc.
TrustedInstaller (Windows Modules Installer)Windows Service / %windir%\servicing\TrustedInstaller.exeBoth LOB MSI and Win32 MSI-wrapped app installers use TrustedInstaller. It does not allow simultaneous installations. If two MSI-based apps try to install at the same time during ESP, one fails with “Another installation is in progress.”
ODJConnectorBoostrapper.exeC:\Program Files\Microsoft Intune\ODJConnector\Installer and uninstaller for the Intune Connector for Active Directory (required for Hybrid Entra Join). Must use this binary — not just the Settings app — for a complete uninstall.
ODJConnectorEnrollmentWiazard.exe.configC:\Program Files\Microsoft Intune\ODJConnector\ODJConnectorEnrollmentWizard\XML configuration file for the Intune Connector UI. Note: “Wiazard” is Microsoft’s actual filename spelling.
Tip: If IsAutopilotDisabled = 1 in the registry and you have confirmed network connectivity to the internet, check services.msc for the Microsoft Account Sign-in Assistant (wlidsvc) service. Security Baselines and CIS hardening scripts commonly set it to Disabled. Set it to Manual and start it, then retry OOBE.

ODJ Connector logs (Hybrid Entra Join only)

For Hybrid Entra Join scenarios, the Intune Connector for Active Directory (ODJ Connector) is responsible for creating the computer object in on-premises AD during Autopilot. When it fails, the logs are in a different location than most engineers expect.

Log locationStatusHow to access
Applications and Services Logs › Microsoft › Intune › ODJConnectorService✓ Current — use thisEvent Viewer (eventvwr.msc) on the connector server
Applications and Services Logs › ODJ Connector Service✗ Legacy — always empty nowDo not use — switch to the Microsoft › Intune path above
C:\Program Files\Microsoft Intune\ODJConnector\ODJConnectorEnrollmentWizard\ODJConnectorUI.log✓ CurrentOpen in Notepad on the connector server. Contains detailed installation and AD join errors.
Gotcha: The legacy Applications and Services Logs › ODJ Connector Service channel in Event Viewer is always empty in current versions. If you are looking there and finding nothing, switch to Applications and Services Logs › Microsoft › Intune › ODJConnectorService. This is the most common reason engineers report “no logs found” for ODJ Connector failures.

Minimum required connector version: 6.2501.2000.5. Check the installed version in Programs and Features before troubleshooting connector issues — older versions have known failures with current Autopilot profiles.

Policies and settings that break Autopilot

Autopilot is sensitive to policies that interfere with autologon, service state, and MSI installation. The following are the most commonly encountered conflicts, confirmed by Microsoft.

Policy / settingWhy it breaks AutopilotWhere configured
AppLocker CSPTriggers a reboot when applied or deleted. Incompatible with ESP — the reboot interrupts the provisioning sequence.Intune › AppLocker CSP
DeviceLock / Password policyCauses autologon to fail during ESP device phase reboots, especially in kiosk scenarios.Intune › DeviceLock CSP or GPO
Security Baseline — UAC / VBS / Admin Approval ModeRequires additional reboots and causes unexpected privilege prompts during OOBE.Intune Security Baselines
“Microsoft Account sign-in assistant” = DisabledDisables the wlidsvc service. Autopilot cannot download the profile. Device shows IsAutopilotDisabled = 1.Intune › Configuration profiles or GPO
AutoAdminLogon = 0 in registryBreaks Autopilot entirely. The registry key at HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon must not have AutoAdminLogon set to 0.Set by some imaging tools or hardening scripts
PreferredAadTenantDomainName policyAdds a preferred domain suffix to the DefaultUser0 account, breaking Autopilot autologon.Intune › Policy CSP › Authentication
GPO: Interactive logon message title / textAny configured logon message breaks Autopilot pre-provisioning (White Glove) by interrupting the autologon sequence.Computer Configuration › Windows Settings › Security Settings › Local Policies › Security Options
GPO: Require WHfB or smart card for interactive logonBreaks pre-provisioning — the technician phase requires autologon which this policy blocks.Same GPO path as above
GPO: UAC – Prompt for credentials on secure desktopBreaks pre-provisioning by requiring admin approval for operations that need to run silently.Same GPO path as above

TrustedInstaller conflict: LOB MSI and Win32 apps installing simultaneously

Both LOB (MSI) app deployments and Win32 app installers use the Windows Modules Installer (TrustedInstaller). TrustedInstaller does not allow two installations to run at the same time. If both types attempt to install concurrently during ESP, one will fail with “Another installation is in progress, please try again later.”

The Microsoft Teams Machine-Wide Installer, which is bundled inside the Microsoft 365 Click-to-Run package, is an MSI component that ESP does not track. It can start at the same time as other Win32 MSI installs, causing random and hard-to-reproduce failures.

Mitigations:

Proof it worked: what clean output looks like

After resolving the issue and re-running the provisioning flow, collect a new diagnostic cab and run Get-AutopilotDiagnostics. A clean, successful session produces output similar to this:

PowerShell — Get-AutopilotDiagnostics output (clean device)
Autopilot profile:
  TenantMatched          : True
  IsAutopilotDisabled    : 0
  AadTenantId            : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  CloudAssignedTenantId  : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  (match ✓)

ESP — Device Setup phase:
  CompanyPortal          : Completed  (InstallationState 3)
  CorporateVPN           : Completed  (InstallationState 3)
  SalesApp               : Completed  (InstallationState 3)

ESP — Account Setup phase:
  UserCerts              : Completed
  WiFiProfile            : Completed

Registry check:
  InstallationState = 4 found : 0 occurrences  ✓
  AutoAdminLogon             : 1  ✓
  wlidsvc status             : Running  ✓

In the Intune Admin Center, a fully provisioned device shows as Compliant and the last check-in time is recent (within the last 15 minutes post-OOBE):

INTUNE ADMIN CENTER — DEVICE STATUS AFTER SUCCESSFUL AUTOPILOT
DESKTOP-CORP-001 ✓ Compliant
LAPTOP-SALES-042 ✗ Not compliant
DESKTOP-DEV-007 ● In grace period

References

Community tools referenced in this post

This guide walks through two established third-party tools, not custom EndpointWeekly scripts. Install directly from their official sources below.

🔗 Get-AutopilotDiagnostics → 🔗 Format-IntuneDiagData →
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Autopilot
Windows Autopilot: Complete Device Lifecycle Management Guide
Zero-touch provisioning from factory to fully managed desktop. Complete guide to…
Autopilot
Windows Autopilot Enrollment Failures: A Structured…
A step-by-step guide for troubleshooting Windows Autopilot enrollment failures — covering…
Intune
Your Intune Portal Shows What Was Assigned. This Script Shows…
The Intune admin center reports what a policy was assigned to. It doesn't tell you what…