HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotPre-provisioningWhite GloveIntuneEnrollment Status PageTPM AttestationOOBEWindows 11

Autopilot pre-provisioning: the reseal step is the part everyone gets wrong

IA
Imran Awan
21 August 2026

Windows Autopilot for pre-provisioned deployment is the only Autopilot scenario where two different people share one deployment. A technician in a warehouse runs the first half. The end user at a desk runs the second half. Most administrators understand that split as a concept. Far fewer can say precisely where the boundary sits, what crosses it, or how to look at a device and tell which side of the boundary that device is on. That gap is where half-provisioned laptops come from, and the reseal step is where the gap usually opens.

The short version

Pre-provisioning splits provisioning into a technician flow, which runs only the two device Enrollment Status Page (ESP) phases, and a user flow, which runs the account setup phase later. Microsoft states plainly that the success screen "validates that enrollment was successful, not that the technician flow is necessarily complete", and that with the ESP disabled the Reseal button can appear before apps and configuration have finished applying. That is the failure mode: a device resealed before it was ready reaches the user still needing the work the warehouse was supposed to absorb. You can tell which phase a device actually finished by reading the documented ESP tracking registry, because the logged-on user's SID subkey is only created during account setup.

The problem: a resealed device that was never actually finished

The ticket always reads the same way. A pre-provisioned laptop is couriered to a new starter. The starter powers it on, picks a language, signs in, and then sits watching the Enrollment Status Page for forty minutes. Half the line-of-business apps are missing. Sometimes the machine never offers a work sign-in at all. Instead it asks the user to accept a licence agreement and create a local account, which is exactly the shape of a device that is still mid-provisioning.

The technician is adamant that the screen went green. They are usually telling the truth. The green screen and a finished device are not the same thing.

Microsoft is unusually direct about this in the technician flow tutorial. The technician flow inherits its behaviour from self-deploying mode, and self-deploying mode uses the ESP to hold the device in a provisioning state. Microsoft writes that if the ESP is disabled, the Reseal button "might appear before applications and configurations are done applying", and that "the success status screen validates that enrollment was successful, not that the technician flow is necessarily complete".

The gotcha: the success screen is an enrollment receipt, not a completion certificate. It confirms the device joined Microsoft Entra ID and enrolled in Intune. Without an ESP profile holding the device, it says nothing about whether your device-targeted apps and policies landed. A technician acting in good faith will reseal a device that is only partly built.

Before going further, it helps to see what the device itself records while this is happening. The Autopilot event channel is where the provisioning narrative lives.

Event Viewer — Microsoft › Windows › ModernDeployment-Diagnostics-Provider › Autopilot
LevelIDMessage
Information160AutopilotRetrieveSettings beginning acquisition.
Information161AutopilotManager retrieve settings succeeded.
Information153AutopilotManager reported the state changed from ProfileState_Unknown to ProfileState_Available.
Warning100Autopilot policy [name] not found.
Error171AutopilotManager failed to set TPM identity confirmed. HRESULT=[error code]

Event 171 is the one to memorise. Microsoft documents it as an issue performing TPM attestation, which is needed to complete the self-deploying mode process. Because pre-provisioning is built on self-deploying capabilities, that single error can stop a technician flow before it really starts.

Why it happens: reseal ends a phase, it does not verify one

To understand the failure you have to stop thinking of pre-provisioning as two screens. Think of it instead as a state machine with a documented boundary.

The three ESP phases, and which ones the technician runs

The Enrollment Status Page tracks three phases. Device preparation and device setup belong to the device ESP. Account setup belongs to the user ESP. Microsoft's technician flow tutorial is explicit: "For technician flow of the Windows Autopilot for pre-provisioned deployment, only the first two Device ESP phases of Device preparation and Device setup run."

That is the phase boundary. Everything that follows is a consequence of it.

PhaseRuns duringWhat it covers
Device preparation (device ESP)Technician flowSecure your hardware (TPM key attestation), join your organization's network (Microsoft Entra join), and register your device for mobile management (Intune enrollment). Installs the Intune Management Extension and creates the SideCar tracking policy.
Device setup (device ESP)Technician flow, and again during the user flowDevice-targeted security policies, SCEP certificate profiles targeted at devices, VPN and Wi-Fi profiles targeted at devices, and device-context apps: per-machine LOB MSI, LOB store apps set to device context, Win32, and WinGet apps.
Account setup (user ESP)User flow onlyUser-targeted policies, certificates, Wi-Fi profiles and apps. Per-user and per-machine LOB MSI apps, LOB store apps, and Win32 apps assigned to the signing-in user.

Two details in that table catch people out. First, Microsoft states that "the device ESP reruns during the user flow so that both device and user ESP run when the user logs in". Device setup is not a one-shot event. That is by design, because it lets the ESP install policies assigned to the device after the technician phase finished.

Second, the technician phase reaches further than "device-targeted" implies. The pre-provisioning article notes that the technician phase installs all device-targeted apps and any user-targeted, device-context apps aimed at the assigned user. If no user is assigned to the Autopilot device object, only the device-targeted apps install. Assigning the user before the technician flow therefore moves real work into the warehouse.

Context: pre-provisioning requires physical hardware with Trusted Platform Module (TPM) 2.0 and device attestation. Virtual machines are not supported, because the process uses Autopilot self-deploying capabilities. The "Secure your hardware" task in device preparation is that TPM key attestation step, and Microsoft notes it is required for self-deploying mode and pre-provisioning but not for user-driven mode. Attestation needs outbound access to the URL pattern *.microsoftaik.azure.net, plus a vendor endpoint for firmware TPMs from Intel, AMD or Qualcomm.

Why the Reseal button can lie

The ESP is the mechanism that holds the device in a provisioning state. Remove it and nothing gates the success screen. There are three realistic ways an enterprise ends up with no effective ESP during the technician flow, and only the first is obvious.

  1. The ESP profile is set to Show app and profile configuration progress: No, or the default profile is disabled and no other profile applies.
  2. The ESP profile is assigned to a user group. Microsoft documents that "in pre-provisioning and self-deploying scenarios, Intune only applies profiles targeted at devices". A user-targeted profile is never consulted, so the device falls back to the default ESP profile.
  3. The blocking app list lives in a user-targeted ESP profile. This is a published known issue: blocking apps specified in a user-targeted Enrollment Status Profile are ignored during device ESP, because the services deciding the blocking list do not know the user identity yet.

In all three cases the technician sees a green screen quickly, presses Reseal, and ships a device that has done little more than enroll.

Watch out: outside of testing, do not power a resealed device back on. Microsoft's tutorial says so directly. Powering it on in the warehouse starts the user flow there, and the user flow is the half that binds the device to the person. If a pre-provisioned device does need to run again, the supported route is to reset it and rerun the technician flow. Note also that a device already deployed through pre-provisioning mode cannot automatically re-enroll. You must delete its device record in Intune first, or redeployment fails with 0x80180014.

The setting that decides what is allowed to fail in the warehouse

One ESP setting exists purely for this scenario, and it is the most useful control in the whole feature. It is called Only fail selected blocking apps in technician phase, and it appears only when blocking apps are configured. Microsoft documents that it applies only to devices going through pre-provisioning, and that Yes is the default for pre-provisioned deployments.

ValueTechnician phase behaviourUser flow behaviour
NoOnly the blocking apps are attempted. Deployment fails if a blocking app fails. Non-blocking apps are not attempted at all.The ESP attempts the non-blocking apps when the user first signs in.
Yes (default for pre-provisioning)All required apps are attempted. Deployment fails only if a blocking app fails. A failed non-blocking device app is ignored and provisioning continues.The ESP reattempts the apps it could not install during the technician flow.

This explains a whole category of confused tickets. A device can pass the technician phase with a green screen while a non-blocking app quietly failed, entirely by design. Microsoft's own tip on this setting warns that provisioning time increases during the technician flow as you add apps. It recommends raising the ESP timeout so the deployment does not fail on a time limit. The default ESP timeout is 60 minutes.

intune.microsoft.comDevices › Device onboardingEnrollment › WindowsEnrollment Status Page

Things that legitimately never happen in the technician phase

Some absences are not faults. Knowing them stops you chasing ghosts.

Two timers to respect: Microsoft says to wait at least 90 minutes after the technician flow before running the user flow, so that tokens refresh properly. That mostly bites lab testing. Separately, the user flow should run within six months of the technician flow. After that the certificates used by the Intune Management Engine may no longer be valid, producing detection failures on Win32 app policies. Warehouse stock that sits for seven months is a real risk, not a theoretical one.

How to verify: read the phase the device really completed

Here is the honest starting position. Microsoft does not publish a registry value that reads "this device was pre-provisioned". Anyone who tells you otherwise is guessing. What Microsoft does publish is the structure of the ESP tracking registry, and that structure is enough to infer the phase boundary reliably.

The key sentence sits in the ESP troubleshooting article, describing the subkeys under the ESP tracking root. One of them is the security identifier (SID) of the logged-in user, and Microsoft writes: "This subkey is created in the account setup phase. It won't be created if the device setup phase fails."

So the presence or absence of a user SID subkey is the tell. A device with device-phase state and no user SID subkey has evidence of the device ESP phases only. That is exactly the shape a correctly resealed, never-signed-in pre-provisioned device should have.

The ESP tracking registry

Every value below sits under this single parent key.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Autopilot\EnrollmentStatusTracking
Relative pathValueWhat it tells you
DevicesubkeyDevice preparation and device setup state exists. Present after any device ESP run, including a technician flow.
ESPTrackingInfo\DiagnosticssubkeysTimestamped snapshots per tracked resource: ExpectedMSIAppPackages, ExpectedModernAppPackages, ExpectedNetworkProfiles, ExpectedCertificateProfiles and ExpectedPolicies.
{User_SID}subkeyThe phase tell. Created during account setup. Absent means account setup never ran, so no user has signed in.
Device\DevicePreparation\PolicyProviders\{Provider}InstallationState1 NotInstalled, 2 NotRequired, 3 Completed, 4 Error. The Intune Management Extension registers as SideCar.
Device\DevicePreparation\PolicyProviders\{Provider}LastError, TimeoutLastError is read only when state is 4. Timeout is in minutes, and the CSP default is 15 minutes when unset.
Device\Setup\AppsLockedWhether device usage is blocked until this stage completes. This is the ESP actually gating the device.
Device\Setup\Apps\PolicyProviders\{Provider}TrackingPoliciesCreatedWhether the provider created its tracking policies for the device setup phase.
Device\Setup\Apps\Tracking\{Provider}\{App}InstallationState1 NotInstalled, 2 InProgress, 3 Completed, 4 Error. A 4 stops the ESP installing further applications.
Device\Setup\Apps\Tracking\{Provider}\{App}RebootRequired1 NotRequired, 2 SoftReboot, 3 HardReboot.
Device\SetupHasProvisioningCompletedSet by the ESP when it completes. Providers read it to know whether the ESP is still showing.
Registry Editor
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Autopilot\EnrollmentStatusTracking
+-- Device\DevicePreparation\PolicyProviders\SideCar
InstallationState  REG_DWORD  0x00000003  // 3 = Completed
+-- Device\Setup\Apps
Locked  REG_DWORD  0x00000001  // ESP is gating the device
+-- Device\Setup\Apps\Tracking\SideCar\Win32App_{aaaaaaaa-0b0b-1c1c-2d2d-333333333333}
InstallationState  REG_DWORD  0x00000003  // 3 = Completed
+-- ESPTrackingInfo\Diagnostics\ExpectedPolicies
// no {User_SID} subkey at the root: account setup has not run

The Autopilot profile cache

The second registry surface tells you whether the device got the right profile at all. It sits under a different parent key.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Provisioning\Diagnostics\Autopilot
ValueTypeMeaning
CloudAssignedTenantDomainstringThe Entra tenant the device is registered with. Blank if the device is not registered with Autopilot.
CloudAssignedTenantIdGUIDTenant GUID matching the domain above. Blank if the device is not Autopilot registered.
AadTenantIdGUIDThe tenant the user signed into. A mismatch against the assigned tenant produces an error for the user.
TenantMatchedDWORD1 if the user tenant matches the registered tenant. 0 shows the user an error and forces a restart.
IsAutopilotDisabledDWORD1 means the device is not Autopilot registered, or the profile could not be downloaded because of firewall, connectivity or timeout problems.
CloudAssignedOobeConfigDWORD bitmapWhich OOBE settings were configured: SkipCortanaOptIn 1, OobeUserNotLocalAdmin 2, SkipExpressSettings 4, SkipOemRegistration 8, SkipEula 16.

The event catalog

Every event below is written to one channel, reachable in Event Viewer under Applications and Services Logs.

Microsoft › Windows › ModernDeployment-Diagnostics-Provider › Autopilot
IDLevelMeaning
100WarningAutopilot policy not found. Usually temporary, while the device waits for a profile download.
101InfoAutopilotGetPolicyDwordByName succeeded. Numeric OOBE settings being processed.
103InfoAutopilotGetPolicyStringByName succeeded. String OOBE settings, such as the Entra tenant name.
109InfoAutopilotGetOobeSettingsOverride succeeded. State-related OOBE settings.
111InfoAutopilotRetrieveSettings succeeded. Profile settings controlling OOBE behaviour were retrieved.
153InfoState changed, normally ProfileState_Unknown to ProfileState_Available. A profile was downloaded and the device is ready to deploy.
160InfoAutopilotRetrieveSettings beginning acquisition.
161InfoRetrieve settings succeeded. The profile downloaded.
163InfoDownload not required, the device is already provisioned. Clean or reset the device to change this. Relevant when a resealed device gets booted again.
164InfoInternet is available to attempt policy download.
171ErrorFailed to set TPM identity confirmed. A TPM attestation problem, which blocks the technician flow.
172ErrorFailed to set the Autopilot profile as available. Typically follows event 171.
807ErrorZtdDeviceIsNotRegistered. Check the hardware hash upload and the profile assignment.
809ErrorZtdDeviceHasNoAssignedProfile, assigned profile does not exist. The profile was deleted without cleanup.
815ErrorZtdDeviceHasNoAssignedProfile, no profile assigned and no tenant default found.
908ErrorSerialNumberMismatch or ProductKeyIdMismatch. Recorded hardware does not match the physical device.

Collecting logs at the bench

If the technician flow fails, gather diagnostics before resetting anything. On Windows 10 the failure screen offers View diagnostics. On Windows 11 press CTRL+SHIFT+D and choose Export Logs. From a command prompt during OOBE, press Shift+F10 and use the pre-provisioning variant of the tool, which includes the TPM area.

Command Prompt during OOBE — Shift+F10
X:\> mdmdiagnosticstool.exe -area Autopilot;TPM -cab C:\autopilot.cab
# The Autopilot;TPM area set is the documented one for self-deploying,
# white glove and any other scenario using a physical device.
# MDMDiagReport_RegistryDump.Reg inside the cab holds the ESP keys above.
Tip: do not read that cab by hand. Microsoft's ESP troubleshooting article points at the Get-AutopilotDiagnostics script on the PowerShell Gallery, which parses the cab and prints a readable timeline of policies and apps. Pair it with the registry read below and you can triage a bench failure in about two minutes.

A read-only phase check you can run on the device

The companion script for this post reads only the documented locations above. It reports which phases a device shows evidence of completing. It writes nothing, needs no modules, and contacts no service.

PowerShell — on the device (run elevated)
.\Get-AutopilotPreProvisioningState.ps1 # Add the Autopilot event channel to the report .\Get-AutopilotPreProvisioningState.ps1 -IncludeEventLog -EventCount 40 # Or emit an object for your own reporting .\Get-AutopilotPreProvisioningState.ps1 -AsObject | ConvertTo-Json -Depth 6

The script insists on an elevated session. That is deliberate. A non-elevated read of these keys can return nothing, and a script that reports "no provisioning history" because it could not read the registry is worse than no script at all.

The fix: make the technician phase provably complete before reseal

The fix is not a registry edit. It is making the ESP do the gating that reseal cannot do on its own, then giving technicians a check they can actually perform.

Step 1: assign an ESP profile to a device group

Pre-provisioning requires an ESP profile targeted at the device. Not the user.

  1. Sign in to the Microsoft Intune admin center.
  2. Select Devices, expand Device onboarding, then select Enrollment.
  3. On the Windows tab, under Windows Autopilot, select Enrollment Status Page.
  4. Select Create, name the profile, then select Next.
  5. Set Show app and profile configuration progress to Yes.
  6. Set Block device use until all apps and profiles are installed to Yes. This is the setting that holds the device.
  7. Set Turn on log collection and diagnostics page for end users to Yes, so a technician can export logs from a failure screen.
  8. Raise Show an error when installation takes longer than specified number of minutes above the 60-minute default if you target many apps.
  9. On Assignments, select the device group holding your Autopilot devices. Then finish with Review + create.
DevicesDevice onboarding › EnrollmentWindows › Enrollment Status PageCreate
There is no Group Policy path for this setting. The Enrollment Status Page is delivered by Intune and implemented through the EnrollmentStatusTracking and DMClient configuration service providers. It is MDM-only, so there is no ADMX-backed equivalent and no local policy to set. The nearest manual override is the custom OMA-URI ./Vendor/MSFT/DMClient/Provider/MS DM Server/FirstSyncStatus/SkipUserStatusPage, which disables the user portion of the ESP. Note that a device which received an ESP policy keeps it even if you later disable the profile.

Step 2: choose your blocking apps deliberately

  1. Open the ESP profile and select Settings.
  2. Confirm Show app and profile installation progress is Yes.
  3. Confirm Block device use until all apps and profiles are installed is Yes.
  4. Set Block device use until these required apps are installed if they are assigned to the user/device to Selected.
  5. Choose Select apps, pick the apps that must exist before a device leaves the bench, then choose Select and Save. You can pick up to 100.
  6. Review Only fail selected blocking apps in technician phase. Leave it at Yes to get maximum work done in the warehouse, accepting that a non-blocking app can fail silently. Set it to No if a green screen must mean every attempted app succeeded.

Keep the blocking list short and meaningful. It is a filter, not an installation list. Microsoft notes that if you list App 1, App 2 and App 3 but only target App 3 and App 4, the ESP tracks App 3 alone. App 4 still installs during pre-provisioning flows, but the ESP will not wait for it.

Watch out: do not mix Win32 and line-of-business MSI apps on the same pre-provisioned device. Both use TrustedInstaller, which refuses simultaneous installations, and the result is the error "Another installation is in progress, please try again later" during ESP. The pre-provisioning article says plainly not to target both to the same device. If you genuinely need both, Microsoft points to Windows Autopilot device preparation, which does not use the ESP at all.

Step 3: clear the policies known to break pre-provisioning

Four Group Policy settings stop pre-provisioning working when enabled. This is the one place in this feature where a real Group Policy path matters.

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
  1. Interactive logon: Message title for users attempting to log on.
  2. Interactive logon: Message text for users attempting to log on.
  3. Interactive logon: Require Windows Hello for Business or smart card.
  4. User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode, set to prompt for credentials on the secure desktop.

Two Intune-side settings deserve the same treatment. Setting Microsoft Account sign-in assistant to disabled turns off the wlidsvc service, which Autopilot needs in order to get its profile. If that service is disabled during the technician flow, the Entra sign-in option may not appear during the user flow at all. The user is asked to accept a licence agreement and create a local account instead. That is the closest thing to a device arriving "still in technician mode", and it is a policy problem rather than a reseal problem.

Separately, the device password policies in the security baseline are documented as causing the web sign-in option to go missing after pre-provisioning completes. Set those password settings to Not configured, or assign the baseline to a user group so it lands during the user flow instead.

Step 4: give the bench a check, not a vibe

Write the technician instruction as a gate rather than a suggestion. Something like this works.

  1. Connect the device to wired Ethernet before powering on. It avoids the region and keyboard prompts and speeds up the profile download.
  2. At the Microsoft Entra sign-in page, do not sign in. Press the Windows key five times to open the What would you like to do? screen.
  3. On Windows 11, select Pre-provision with Windows Autopilot and then Next. On Windows 10, select Windows Autopilot provisioning and then Continue.
  4. Check the organization name, the profile name and the assigned user on the configuration screen. Use Refresh if you changed anything in Intune, so the updated profile details are downloaded.
  5. Select Provision on Windows 10, or Next on Windows 11.
  6. Wait for the ESP to show Device preparation and Device setup both complete. Expand the details to see counts, not just spinners.
  7. Only then select Reseal. The device shuts down. Do not power it on again.
  8. Record the elapsed time shown on the success screen.

That last step is the cheapest control in this whole article. If your device-targeted app set normally takes 25 minutes and a bench run reports four, something is wrong even though the screen is green.

Proof it worked: what a correctly resealed device looks like

The output below is illustrative rather than a capture from a customer device. It shows the shape of a healthy technician-phase device: device state present, one SideCar provider completed, tracked device apps completed, and zero user SID subkeys.

PowerShell — illustrative output, resealed device before user flow
Autopilot pre-provisioning phase evidence -------------------------------------------------------------------------- Generated (UTC) : 2026-08-21T09:14:02Z Verdict : DeviceEspPhasesOnly Device ESP state is present and no user SID subkey exists. Microsoft documents that the user SID subkey is created in the Account setup phase, so this device has evidence of the Device preparation and Device setup phases only. Autopilot profile cache -------------------------------------------------------------------------- Key present : True CloudAssignedTenantDomain : contoso.onmicrosoft.com CloudAssignedTenantId : aaaaaaaa-0b0b-1c1c-2d2d-333333333333 AadTenantId : (not present) TenantMatched : (not present) IsAutopilotDisabled : (not present) CloudAssignedOobeConfig : 28 [SkipExpressSettings, SkipOemRegistration, SkipEula] ESP tracking structure -------------------------------------------------------------------------- EnrollmentStatusTracking present : True Subkeys : Device, ESPTrackingInfo User SID subkeys (Account setup) : 0 Device Setup Apps 'Locked' : 1 Device preparation policy providers -------------------------------------------------------------------------- SideCar InstallationState : 3 (Completed) LastError : (not present) Timeout (minutes) : 30 Device-context apps tracked by ESP -------------------------------------------------------------------------- Provider SideCar TrackingPoliciesCreated = 1 SideCar / Win32App_aaaaaaaa-0b0b-1c1c-2d2d-333333333333 InstallationState : 3 (Completed) # Healthy technician-phase shape: device state present, apps completed, # zero user SID subkeys, and the ESP was actually locking the device.

Three signals in that output matter together. Locked is 1, which means the ESP really was gating the device rather than waving it through. The SideCar provider reached state 3, so the Intune Management Extension finished its device-preparation work. And the user SID count is zero, which is what you want on a device that has been resealed but not yet handed over.

Compare that with the two failure shapes. A device whose Locked value is absent, with no tracked apps and no ESPTrackingInfo subkey, almost certainly ran a technician flow with no effective ESP. A device that already has a user SID subkey has had someone sign in on it, which on warehouse stock means the user flow was started before shipping.

Read the verdict honestly: this check reports evidence, not proof. Nothing in the registry records that a human pressed Reseal. A device that completed only the device ESP phases for another reason, such as self-deploying mode or an interrupted user-driven deployment, produces the same registry shape. The script prints those caveats explicitly, including a warning when the registered ESP policy provider is something other than SideCar, because that indicates a different provisioning agent entirely.

Finish by cross-checking the tenant view. The Windows Autopilot deployment report in the Intune admin center is the authoritative record of the deployment attempt, and the device-side registry is your corroboration.

DevicesMonitorWindows Autopilot deployments

One caveat on that report. Microsoft documents that its deployment duration covers the time between enrollment and completion of the account setup phase. On a pre-provisioned device those two events can be separated by weeks, so treat the duration figure with care and read the per-phase detail instead.

References

One community deep-dive is worth reading alongside the official docs.

AuthorArticleWhy it is worth reading
Rudy Ooms (MVP)Autopilot White Glove Pre-Provisioned Deployment FlowWalks the device-preparation stages in order and is emphatic about not touching the device once the green screen appears. Useful field context on why rebooting after the success screen causes trouble at user sign-in.

The companion read-only script for this post is Get-AutopilotPreProvisioningState.ps1. It reads only the documented Autopilot and ESP registry locations listed above, prints its confidence caveats, and aborts rather than reporting a misleading clean result if a registry read fails.

PowerShell Scripts — Pre-Provisioning State

Download it from Imran76Awan/Windows-Autopilot-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-AutopilotPreProvisioningState.ps1 — whether this device completed the technician phase or full user-driven provisioning
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Autopilot
It attested last month: how a TPM firmware update breaks…
Autopilot self-deploying mode and pre-provisioning authenticate the device with its TPM,…
Autopilot
Troubleshooting Autopilot from inside OOBE: Shift+F10, the…
A failed Autopilot device at OOBE has no desktop, no user session and no Event Viewer.…
Autopilot
The ESP device phase and user phase are two different machines:…
The Enrollment Status Page runs its device preparation and device setup phases in device…