Monday 6 November 2017

My experience with Windows 10 AutoPilot - the good and the bad

I've just configured Windows 10 AutoPilot in my test Azure tenant and enrolled my first devices. It's really easy and the experience has been mostly very positive. I had one issue which actually turned out not to be a technical issue but I'll get to that a little later on. 

What is Windows AutoPilot? The official Microsoft definition is as follows:

"Windows AutoPilot is a collection of technologies used to setup and pre-configure new devices, getting them ready for productive use".

It's actually the Microsoft equivalent of Apple's Device Enrollment Program (DEP) for those of you familiar with managing Apple devices in the corporate world. The idea is that a user can take delivery of their new Windows 10 device and join it  to the organizations Azure Active Directory in a matter of minutes without having to complete all the annoying setup screens. Also the user does not have to end up being a local administrator on the device, as used to be the case with manual Azure AD Join (unless you want the user to be a local administrator of course, which is doubtful).

This is all part of the Microsoft modern management story. Traditional management typically leverages technologies such as Active Directory, Group Policy and ConfigMgr to provide deep manageability and security. Make no mistake, this is set to continue. Modern management is a more simplified approach using cloud-based solutions like Microsoft Enterprise Mobility + Security (EMS), which includes Azure AD Premium and Intune. It’s complemented by cloud services like Azure Information Protection, Office 365 and Microsoft Store for Business. Windows 10 offers the flexibility to respond to these changing requirements, and can easily be deployed in a mixed environment in areas like provisioning, authentication and configuration management.

At a recent event I was asked about modern management and the scenarios in which it was useful. I didn't give a particularly useful answer at the time but I've had time to reflect on the question since. In my opinion modern management is useful when you don't particularly care too much about the device. It's all about the data and access to corporate resources. For remote users that primarily use Office 365 the modern management scenario is ideal. Access to corporate resources is managed and controlled by Azure AD and Intune conditional access and data is protected by Azure Information Protection policies. Don't get me wrong, we can still manage the devices to a high standard using Windows 10 Configuration Service Providers (CSPs) although these are a subset of what can be managed using traditional group policy objects (GPOs).

So back to Windows AutoPilot, the steps to configure the solution are as follows:
  1. Prerequisites
  2. Hardware ID
  3. Add devices to tenant
  4. Assign AutoPilot deployment profile
  5. Windows 10 configuration via CSP (optional)
  6. User turns on device and signs in
Step 1 - Prerequisites
  • Devices must be pre-installed with Windows 10, version 1703 or later 
  • Devices must have access to the internet
  • Azure AD Premium P1 or P2 licenses
  • Microsoft Intune or other MDM services to manage your devices
  • Azure AD configured for Intune autoenrollment (note that Windows Autopilot is not supported on Intune hybrid at this time, although it "may" work).
  • Devices must be registered to the organization (we'll do this in step 3)
Step 2 - Hardware ID

This step involves harvesting hardware information from your Windows 10 devices and uploading this information to your tenant in advance. This hardware information includes the device serial number, the Windows Product ID and the hardware hash in CSV format. As usual there are a number of ways to gather the information and upload. 

Note: I've gathered the hardware information manually from a VM in my lab for the purposes of demo. In reality, from early 2018 we won't have to do this in production. The main hardware vendors have signed up (or will sign up) to participate in the Windows AutoPilot program. This means that they will provide this CSV for each device that they ship directly to users. There are also plans to allow the vendors to upload this information  to your tenant on your behalf. Watch this space.

I've chosen to create the CSV file using a PowerShell script provided by Microsoft. See here for a description of the script. It's in the PowerShell gallery so you don't have to download and install it. It installs automatically when you execute it from the PoSH console (run as administrator).

Execute the script: Install-Script -Name Get-WindowsAutoPilotInfo

Accept the warning about the path environment variable change.

Allow the NuGet provider to be installed.

Allow scripts to be run from "PSGallery".

The script is available in C:\Program Files\WindowsPowerShell\Scripts

Set the execution policy so that you can run untrusted scripts.

Execute the script: .\Get-WindowsAutoPilotInfo.ps1 -ComputerName <ComputerName> -OutputFile .\ComputerName.csv

The CSV file has been generated and can be found in the C:\Program Files\WindowsPowerShell\Scripts folder.

This is the format of the CSV file. You can see the device serial number, the Windows Product ID and the hardware hash.

Step 3 - Add devices to tenant

Now that we have generated the CSV file we can add the device to the tenant. We must do this in the Microsoft Store for Business.

Note: Even though we can create AutoPilot deployment profiles in the Intune portal we cannot add devices at this time. If we want to use Intune profiles we must add devices to the MSfB and sync to Intune.

Select "Manage".

Select "Devices". Click "Add devices". Navigate to the CSV file and add the device to a deployment group when prompted.

Device is added to your tenant.

Step 4 - Assign AutoPilot deployment profile

There are two options for this. We can create deployments profiles in either the Microsoft Store for Business or the Intune Portal (in Azure).

Option A
Open the MSfB and navigate to Manage > Devices

Click on AutoPilot deployment and choose Create new profile.

Enter a name for the profile and select your required settings.

Select a device or a number of devices and apply a profile.

These devices are now ready to go.

Option B
Open the Intune Portal in Azure.

Select Device enrollment.

Select Deployment Profiles.

Choose Create Profile.

Enter a profile name and choose the join type - Azure AD Joined. Edit the OOBE settings.

Select your OOBE settings. The options are the same as those in the MSfB.

The AutoPilot deployment profile has now been created in Intune and can be assigned to devices. Where do the devices come from though? I can't add them directly in Intune.

In the Intune Portal, navigate to Device enrollment > Windows enrollment > Devices.

Click Sync to synchronizing devices from MSfB.

Select a device and choose Assign.

Select the AutoPilot profile you created earlier.

The device is ready to go.

Step 5 - Windows 10 configuration via CSP (optional)

This isn't really part of Windows AutoPilot but is very much part of the modern management story so is worth a mention. We can configure some Intune plicies using Windows 10 Configuration Service Providers and these will apply to the devices once the are joined to Azure AD and enrolled in Intune.

It's very straightforward to create and deploy a CSP policy. Read more about CSPs here.

In the Intune Portal, navigate to Device configuration.

Choose Create Profile.

I want to disable Bluetooth on my devices. Enter a name and choose the platform and profile type. Select Configure.

Name: Disable Bluetooth
OMA-URI: ./Vendor/MSFT//Policy/Config/Connectivity/AllowBluetooth
Data type: Integer
Value: 0

Save the policy......

....and assign it to your users.

Step 6 - User turns on device and signs in

I have two VMs for testing. The one of the left is the one whose hardware details have been uploaded to my tenant and assigned a Windows AutoPilot profile (it has been reset). The one on the left is just a regular Windows 10 v1709 VM.

Select your region.

Select your keyboard layout.

Do you need a second keyboard layout? So far so good.

Now the VMs connect to the internet for updates. The VMs have an Ethernet connection. Otherwise I would've been prompted to join a wireless network. Remember that an internet connection is required.

....and here we go. The Windows AutoPilot deployment profile has been applied to the VM on the left. 

Look at the differences:
  • my tenant name appears on the autopilot VM (I cheated here - see below)
  • I don't have the option for "Domain join instead" on the autopilot VM. I have to enter my Azure AD credentials in order to continue.

Slight cheat:

I spent quite a while trying to figure out how to get my tenant name to appear as shown above. I kept getting a "Sign in with Microsoft" screen and as a result thought that the autopilot profile did not apply. All the Microsoft documentation and demos showed this and it turns out that this is misleading. Damion, Mayank and Maciek from Microsoft helped me to understand that this customization is not actually part of the autopilot profile. 

I figured out that this comes from the Company Branding feature of Azure.

You don't really have to configure it very much. The status just can't be "Not configured".


So let's carry on with the user experience.

Enter the password.

Windows sets up the devices.

We don't have to choose privacy settings on the autopilot VM.

We must configure Windows Hello (requirement of our tenant).

MFA kicks in (note that the user is walked through the MFA setup process if they haven't already completed).

Set up Windows Hello PIN......

....and we're done. Now let's examine the two VMs.

Both are joined to Azure AD but I don't have administrator permissions on the autopilot VM.

This is verified by looking at the local administrators group.

(Note that if the user is a global administrator on the tenant they will be a local administrator on the device, regardless of the AutoPilot settings).

See my optional CSP configuration. Bluetooth is disabled on both devices with no possibility of turning it on. I've shown another computer with Bluetooth enabled for comparison.


Overall this was a brilliant experience. Windows AutoPilot is a dead cool technology and still a work in progress. However there are a couple of things requiring a little more work.
  1. We're still not able to add devices directly into Intune. We have to add to MSfB and sync to Intune.
  2. You cannot remove devices in Intune. The facility to remove devices is available in MSfB but I had some difficulty and got the error message "Try that again. Some of the devices weren't removed".
  3. Devices cannot be renamed in MSfB or Intune.
  4. The Microsoft documentation is very misleading and I wasted a lot of time as my tenant name didn't appear on the sign-in screen. It turns out that this was to be configured using Company Branding, not AutoPilot. I would like to see Company Branding enabled with default settings as soon as an autopilot deployment profile was created.


  1. Another very cool feature worth calling out. If you require MFA and the user isn't already enrolled, it will walk the user through MFA enrollment during the step where you show MFA kicking in.

  2. Due to the requirement for EMS/AADJ management, AutoPilot's use cases are very limited. Once co-management is prime time, AutoPilot will be a viable option for the Enterprise.

  3. With Apple dep, can we also upload a csv with devices (iPad fir exemple) ?

    1. Autopilot is a Windows 10 only feature.

    2. I understand sir, but with Autopilot we can upload a CSV is this also possible with apple dep? So if we have ipads bought a couple of months ago can we upload them later ?

    3. This doesn't work for iOS, it's a Windows 10 ONLY feature.

    4. Mr Gerry, sorry for not being clear, my fault. I know Autopilot is for Windows 10 only. So that part of my question is answered :-) But I have a question about Apple DEP. Can we upload csv with apple devices into Intune so we can use them in combination with Apple DEP?

    5. You can read about it here

  4. Where can we set company name for sign-in page? I can only upload logo’s but on you screenshot i see name GHLab!

    1. Configure company branding in your Azure Portal. I've referred to this above.

    2. Yes I saw. Thanks. But I can only upload logo's not type/enter text so i can enter my company name like you did GHLab

    3. All you need to do is configure company branding and the tenant name is auto-detected. It isn't customizable.

  5. Great content and the screenshots are very valuable! Keep it up!

  6. This comment has been removed by the author.

  7. This comment has been removed by the author.

  8. Hi gerry, the name is customizable i found this blog @

  9. Hey Gerry, We are attempting to assign the autodeployment profile and it is showing on the MSfB and InTune that the profile is assigned but it's not actually disabling the privacy settings or Cortana, etc. We have been troubleshooting and tried assigning only the MSfB, then only the InTune profile and the both but each time it's not working properly. It's still presenting us with the settings that it's supposed to delete.

    Did you see this happen during your setup? any advice or suggestions for troubleshooting?

    1. I haven't seen that particular problem once the hardware ID was uploaded correctly.

    2. I have seen this some times on a select computers. Have not found out how to fix the problem. The computer will just not connect to Autopilot and gets the regular OOBE.

  10. Hi, I've got some issues when logging in during the autopilot wizard. I see my company branded login, but when I login with my valid user credentials I've got error message

    This user is not authorized to enroll. You can try to do this again or contact your system administrator with the error code 80180003."

    Any idea what I've done wrong?

    1. The account you are using has likely hit its device enrollment limit. You will need to configure the device enrollment limit in Azure AD to a larger number.

  11. Can a computer registered in autopilot ignore the start of the professional account and start with a local user?

    In other words, if this computer is stolen and I reinstall the operating system, can I logon with a non-corporate user?

  12. Hi

    Is it possible to perform a hybrid ad join with auto pilot? After AP deployment, we are pushing the SCCM client for comanagement usage but I would like to know if we can also have the device registered in the on prem which would allow to have all management options available (in tune, gpo, comgmt,scp,SCCM...)

    1. AD domain join is expected with Windows 10 1809.