Microsoft
Autopilot Step by Step
What is Autopilot: - Windows Autopilot is a collection of
technologies used to set up and pre-configure new devices, getting them ready
for productive use. ... Once deployed, Windows 10 devices can be managed by tools
such as Microsoft Intune, Windows Update for Business, Microsoft Endpoint
Configuration Manager, and other similar tools.
Requirements
·
Windows 10, version 1703 or later
·
New devices that have not been through Windows out-of-box
experience
Microsoft Azure Configurations...
2. Navigate to Azure
Active Directoryà DevicesàDevice Settings
3. Select Users may join devices to Azure AD for all and
click Save
2. On the
left navigation pane, choose Devicesà Windowsà Windows
EnrolmentàDeployment
Profiles
Microsoft Intune Configuration…
Setup Intune as the MDM authority
Azure portal, go to Microsoft Intune/Device Enrollment/Choose MDM
Authority.
Select Intune MDM authority
Verify if it's set it up already… IntuneàDevice
EnrolmentàOverview
Set Automatic Enrolment
Go to Microsoft IntuneàDevice Enrollment àWindows Enrollment select Automatic Enrollment
Select a group or if All MDM USERS can enroll
devices. This can be restricted latter using enrolment restriction policies….
CREATING AUTOPILOT
DEPLOYMENT PROFILE
Benefits:
·
Automatically setup for
work or school
·
Customized Azure AD sign-in
page
·
Skip privacy settings
and EULA
Navigate
Microsoft IntuneàDevice EnrolmentàWindows EnrolmentàDeployment Profiles
Click
Deployment Profiles
Create
Profile
You
can select Administrator if you want the user to have administrator access….
Click
NEXT
Click
NEXT
Configure ENROLLMENT
STATUS PAGE(ESP)
Create an ESP Profile
Click
NEXT
Click
NEXT
Select
All Users if possible or create a custom user group
Add Dynamic Query
(device.devicePhysicalIds
-any _ -contains "[ZTDId]")
Import Hardware ID to
Microsoft INTUNE
- Copy
below in a notepad and save as GetAutoPilotD.cmd
PowerShell
-NoProfile -ExecutionPolicy Unrestricted -Command
C:\Temp\Autopilot\Get-WindowsAutoPilotInfo.ps1 -ComputerName $env:computername
-OutputFile
C:\Temp\Autopilot\$env:computername.csv
- Copy
below in a notepad and save as Get-WindowsAutoPilotInfo.ps1
<#PSScriptInfo
.VERSION 1.3
.GUID ebf446a3-3362-4774-83c0-b7299410b63f
.AUTHOR Michael Niehaus
.COMPANYNAME Microsoft
.COPYRIGHT
.TAGS Windows AutoPilot
.LICENSEURI
.PROJECTURI
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES
Version 1.0: Original published version.
Version 1.1: Added -Append switch.
Version 1.2: Added -Credential switch.
Version 1.3: Added -Partner switch.
#>
<#
.SYNOPSIS
Retrieves the Windows AutoPilot deployment
details from one or more computers
.DESCRIPTION
This script uses WMI to retrieve properties
needed by the Microsoft Store for Business to support Windows AutoPilot
deployment.
.PARAMETER Name
The names of the computers. These can be
provided via the pipeline (property name Name or one of the available aliases,
DNSHostName, ComputerName, and Computer).
.PARAMETER OutputFile
The name of the CSV file to be created with
the details for the computers. If not specified, the details will be returned
to the PowerShell
pipeline.
.PARAMETER Append
Switch to specify that new computer details
should be appended to the specified output file, instead of overwriting the
existing file.
.PARAMETER Credential
Credentials that should be used when
connecting to a remote computer (not supported when gathering details from the
local computer).
.PARAMETER Partner
Switch to specify that the created CSV file
should use the schema for Partner Center (using serial number, make, and
model).
.EXAMPLE
.\Get-WindowsAutoPilotInfo.ps1 -ComputerName
MYCOMPUTER -OutputFile .\MyComputer.csv
.EXAMPLE
.\Get-WindowsAutoPilotInfo.ps1 -ComputerName
MYCOMPUTER -OutputFile .\MyComputer.csv -Append
.EXAMPLE
.\Get-WindowsAutoPilotInfo.ps1 -ComputerName
MYCOMPUTER1,MYCOMPUTER2 -OutputFile .\MyComputers.csv
.EXAMPLE
Get-ADComputer -Filter * |
.\GetWindowsAutoPilotInfo.ps1 -OutputFile .\MyComputers.csv
.EXAMPLE
Get-CMCollectionMember -CollectionName
"All Systems" | .\GetWindowsAutoPilotInfo.ps1 -OutputFile
.\MyComputers.csv
.EXAMPLE
.\Get-WindowsAutoPilotInfo.ps1 -ComputerName
MYCOMPUTER1,MYCOMPUTER2 -OutputFile .\MyComputers.csv -Partner
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$False,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True,Position=0)][alias("DNSHostName","ComputerName","Computer")]
[String[]] $Name = @($env:ComputerName),
[Parameter(Mandatory=$False)] [String]
$OutputFile = "",
[Parameter(Mandatory=$False)] [Switch]
$Append = $false,
[Parameter(Mandatory=$False)]
[System.Management.Automation.PSCredential] $Credential = $null,
[Parameter(Mandatory=$False)] [Switch]
$Partner = $false,
[Parameter(Mandatory=$False)] [Switch] $Force
= $false
)
Begin
{
# Initialize empty list
$computers = @()
}
Process
{
foreach ($comp in $Name)
{
$bad = $false
# Get the common properties.
Write-Verbose "Checking
$comp"
$serial = (Get-WmiObject -ComputerName
$comp -Credential $Credential -Class Win32_BIOS).SerialNumber
# Get the hash (if available)
$devDetail = (Get-WMIObject
-ComputerName $comp -Credential $Credential -Namespace root/cimv2/mdm/dmmap
-Class MDM_DevDetail_Ext01 -Filter "InstanceID='Ext' AND
ParentID='./DevDetail'")
if ($devDetail -and (-not $Force))
{
$hash =
$devDetail.DeviceHardwareData
}
else
{
$bad = $true
$hash = ""
}
# If the hash isn't available, get the
make and model
if ($bad -or $Force)
{
$cs = Get-WmiObject -ComputerName
$comp -Credential $Credential -Class Win32_ComputerSystem
$make = $cs.Manufacturer.Trim()
$model = $cs.Model.Trim()
if ($Partner)
{
$bad = $false
}
}
else
{
$make = ""
$model = ""
}
# Getting the PKID is generally
problematic for anyone other than OEMs, so let's skip it here
$product = ""
# Depending on the format requested,
create the necessary object
if ($Partner)
{
# Create a pipeline object
$c = New-Object psobject -Property
@{
"Device Serial
Number" = $serial
"Windows Product ID" = $product
"Hardware Hash" =
$hash
"Manufacturer name" =
$make
"Device model" =
$model
}
# From spec:
#
"Manufacturer Name" = $make
#
"Device Name" = $model
}
else
{
# Create a pipeline object
$c = New-Object psobject -Property
@{
"Device Serial
Number" = $serial
"Windows Product ID"
= $product
"Hardware Hash" = $hash
}
}
# Write the object to the pipeline or
array
if ($bad)
{
# Report an error when the hash
isn't available
Write-Error -Message "Unable
to retrieve device hardware data (hash) from computer $comp" -Category
DeviceError
}
elseif ($OutputFile -eq "")
{
$c
}
else
{
$computers += $c
}
}
}
End
{
if ($OutputFile -ne "")
{
if ($Append)
{
if (Test-Path $OutputFile)
{
$computers += Import-CSV -Path
$OutputFile
}
}
if ($Partner)
{
$computers | Select "Device
Serial Number", "Windows Product ID", "Hardware Hash",
"Manufacturer name", "Device model" | ConvertTo-CSV
-NoTypeInformation | % {$_ -replace '"',''} | Out-File $OutputFile
# From spec:
# $computers | Select "Device
Serial Number", "Windows Product ID", "Hardware Hash",
"Manufacturer Name", "Device Name" | ConvertTo-CSV
-NoTypeInformation | % {$_ -replace '"',''} | Out-File $OutputFile
}
else
{
$computers | Select "Device
Serial Number", "Windows Product ID", "Hardware Hash"
| ConvertTo-CSV -NoTypeInformation | % {$_ -replace '"',''} | Out-File
$OutputFile
}
}
}
Create Folder C:\Temp\Autopilot
Copy
Files C:\Temp\Autopilot\Get-WindowsAutoPilotInfo.ps1 &
C:\Temp\Autopilot\GetAutoPilotD.cmd
Run
GetAutoPilotD.cmd using command as ADMIN and .csv will be created in the
same folder with the computer name.
Or
Device Import to Azure using Powershell
Set-ExecutionPolicy bypass
Install-Script -Name Upload-WindowsAutopilotDeviceInfo
Get-WindowsAutoPilot -Online
Upload Hardware ID to Intune
Click
Devices
Click
Import and Select .csv and Import
Device
details after import and sync. It takes 15-2o Minutes.
Turn
on imported Device for OOBE and Test Autopilot
SearchàReset PCà Get Startedà
Remove
everything and follow on-screen instruction.
Enter
username and password and follow OOBE
Setup
will go through and will be completed. The installation will depend on Apps and
settings assigned to Enrollment Status Page.