Skip to content

Instantly share code, notes, and snippets.

@MrWyss-MSFT
Created April 19, 2022 06:23
Show Gist options
  • Select an option

  • Save MrWyss-MSFT/7f5f82417e193f8198b721cf66b02262 to your computer and use it in GitHub Desktop.

Select an option

Save MrWyss-MSFT/7f5f82417e193f8198b721cf66b02262 to your computer and use it in GitHub Desktop.
Function Get-ESPProgress () {
<#
.SYNOPSIS
Reads the ESP Phase status from Registry, returns PSCustomObject
#>
[CmdletBinding()]
param (
[Parameter(Mandatory, HelpMessage = 'Choose ESP Phase')]
[ValidateSet("DevicePreparation", "DeviceSetup", "AccountSetup")]
[String]
$Phase
)
$RegPath = "HKLM:\SOFTWARE\Microsoft\Provisioning\AutopilotSettings"
try {
$val = Get-ItemPropertyValue -Path $RegPath -Name $Phase"Category.Status" -ErrorAction Stop
return $val | ConvertFrom-Json
}
catch {
$val = $null
}
}
$DevPrep = Get-ESPProgress -Phase DevicePreparation
$DevSetup = Get-ESPProgress -Phase DeviceSetup
$AccSetup = Get-ESPProgress -Phase AccountSetup
$objcol = New-Object System.Collections.ArrayList
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.categoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.categoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "TPM Attestation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.'DevicePreparation.TpmAttestationSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.'DevicePreparation.TpmAttestationSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "MEM Enrollment"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.'DevicePreparation.MdmEnrollmentSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.'DevicePreparation.MdmEnrollmentSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "ESP Provider Installation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.'DevicePreparation.EspProviderInstallationSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.'DevicePreparation.EspProviderInstallationSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Initial Sync"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.'DevicePreparation.InitiateSyncSessions'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.'DevicePreparation.InitiateSyncSessions'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Set Continue Button"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevPrep.'DevicePreparation.SetContinueAnywayButtonVisibility'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Preparation"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevPrep.'DevicePreparation.SetContinueAnywayButtonVisibility'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.categoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.categoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Security Policies"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.SecurityPoliciesSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.SecurityPoliciesSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Certificates"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.CertificatesSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.CertificatesSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Network Connections"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.NetworkConnectionsSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.NetworkConnectionsSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Apps"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.AppsSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.AppsSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Reboot Coalecing"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.RebootCoalescing'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.RebootCoalescing'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Send results to MDM"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.SendResultsToMdmServer'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.SendResultsToMdmServer'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Save WhiteGlove result"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $DevSetup.'DeviceSetup.SaveWhiteGloveSuccessResult'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Device Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $DevSetup.'DeviceSetup.SaveWhiteGloveSuccessResult'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.categoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.categoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Waiting for AAD Registration"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.WaitingForAadRegistrationSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.WaitingForAadRegistrationSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Prepare MFA"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.PrepareMultifactorAuth'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.PrepareMultifactorAuth'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Security Policies"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.SecurityPoliciesSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.SecurityPoliciesSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Certificates"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.CertificatesSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.CertificatesSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Network Connections"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.NetworkConnectionsSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.NetworkConnectionsSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Apps"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.AppsSubcategory'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.AppsSubcategory'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryDescription" -Value "Send results to MDM"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatus" -Value $AccSetup.'AccountSetup.SendResultsToMdmServer'.subcategoryState
$temp | Add-Member -MemberType NoteProperty -Name "Category" -Value "Account Setup"
$temp | Add-Member -MemberType NoteProperty -Name "SubCategoryStatusText" -Value $AccSetup.'AccountSetup.SendResultsToMdmServer'.subcategoryStatusText
$objcol.Add($temp) | Out-Null
$objcol | Select Category, SubCategoryDescription,SubCategoryStatusText, SubCategoryStatus | ft -AutoSize
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment