How to skip the ESP for a single app installation

So überspringst du die ESP für eine einzelne App

Thema dieser Seite: So überspringst du die ESP für eine einzelne App

Leider gibt es in Intune keine Einstellung, mit der du festlegen kannst, ob eine App während der ESP (Enrollment Status Page) oder erst nach der ESP installiert werden soll. Natürlich ist es ein riesiger Vorteil, möglichst viele Apps während der ESP oder noch besser während der White-Glove-Phase zu installieren, damit du nach dem Enrollment ein einsatzbereites Gerät hast. Es gibt jedoch Fälle, in denen es sinnvoll sein kann, eine App erst nach der ESP zu installieren, zum Beispiel wenn die Installationsroutine eine Interaktion erfordert. Wie du die Installation einer App in der ESP überspringen kannst, erkläre ich dir jetzt.

Wie erkenne ich, ob ich mich in der ESP befinde?

Option 1

Das ist eigentlich ganz einfach. Während der ESP werden die Prozesse mit dem “defaultuser0” ausgeführt. Wir müssen jetzt also einfach prüfen, unter welchem Benutzer der Explorer-Prozess läuft. Läuft er unter “defaultuser0”, dann befinden wir uns in der ESP. Ist es ein anderer Benutzer, dann ist es nach der ESP. Manchmal erstellt der Prozess auch einen “defaultuser1”. Um es robuster zu machen, prüfen wir auch auf diesen Benutzer.

Um das zu prüfen, habe ich ein kleines Anforderungsskript geschrieben:

<#
Version: 1.0
Author: Jannik Reinhard (jannikreinhard.com)
Script: Get-EspDetection
Description:
Skip the ESP for app installation
Release notes:
Version 1.0: Init
#>

$processesExplorer = @(Get-CimInstance -ClassName 'Win32_Process' -Filter "Name like 'explorer.exe'" -ErrorAction 'Ignore')
$esp = $false
foreach ($processExplorer in $processesExplorer) {
    $user = (Invoke-CimMethod -InputObject $processExplorer -MethodName GetOwner).User
    if ($user -eq 'defaultuser0' -or $user -eq 'defaultuser1') {$esp = $true}
}

Write-Host $esp 

Option 2

Es gibt eine zweite Option. Für jede ESP-Phase (Device preparation, Device setup und Account setup) werden Registry-Schlüssel zum jeweiligen Status geschrieben. Diesen Schlüssel findest du unter folgendem Pfad: “Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Provisioning\AutopilotSettings”.

Das Skript liest die drei Status-Werte aus und gibt nur dann True zurück, wenn alle drei Phasen erfolgreich abgeschlossen sind. Solange auch nur eine Phase noch läuft, bleibt der Wert auf False und die App wird zurückgehalten. Diese Variante ist etwas robuster als die Prüfung über den Explorer-Prozess, weil sie nicht davon abhängt, unter welchem Benutzer ein Prozess gerade läuft. Welche der beiden Optionen du wählst, hängt vor allem von deiner Umgebung ab. In den meisten Fällen reicht Option 1 völlig aus, Option 2 ist dann sinnvoll, wenn du die ESP-Phasen besonders genau auswerten möchtest.

Auch dafür habe ich ein Skript geschrieben:

<#
Version: 1.0
Author: Jannik Reinhard (jannikreinhard.com)
Script: Get-EspDetection
Description:
Skip the ESP for app installation
Release notes:
Version 1.0: Init
#>


[bool]$DevicePrepComplete = $false
[bool]$DeviceSetupComplete = $false
[bool]$AccountSetupComplete = $false

$regPath = 'HKLM:\SOFTWARE\Microsoft\Provisioning\AutopilotSettings'
$esp = $true

try{
    $devicePreperationCategory = (Get-ItemProperty -Path $regPath -Name 'DevicePreparationCategory.Status' -ErrorAction 'Ignore').'DevicePreparationCategory.Status'
    $deviceSetupCategory = (Get-ItemProperty -Path $regPath -Name 'DeviceSetupCategory.Status' -ErrorAction 'Ignore').'DeviceSetupCategory.Status'
    $sccountSetupCategory = (Get-ItemProperty -Path $regPath -Name 'AccountSetupCategory.Status' -ErrorAction 'Ignore').'AccountSetupCategory.Status'

}catch{
    $esp = $false
}

if (-not (($devicePreperationCategory.categorySucceeded -eq 'True') -or ($devicePreperationCategory.categoryState -eq 'succeeded'))) {$esp = $false}
if (-not (($deviceSetupCategory.categorySucceeded -eq 'True') -or ($deviceSetupCategory.categoryState -eq 'succeeded'))) {$esp = $false}
if (-not (($sccountSetupCategory.categorySucceeded -eq 'True') -or ($sccountSetupCategory.categoryState -eq 'succeeded'))) {$esp = $false}


Write-Host $esp 

So fügst du das Anforderungsskript hinzu

  • Öffne das Intune Admin Center und navigiere zu der App, für die du die ESP überspringen möchtest
  • Klicke auf Edit und Requirements
  • Klicke bei “Configure additional requirement rules” auf +Add
  • Wähle die folgenden Einstellungen:
    • Wähle Script
    • Lade das Requirement script hoch
    • Wähle Boolean als “Select output data type
    • Operator: Equals
    • Value: No
  • Klicke auf OK und speichere die Einstellungen

Fazit: Wann du die ESP für eine App überspringen solltest

Mit dieser Anforderungsregel installiert Intune die App erst, nachdem das Gerät die Enrollment Status Page verlassen hat. Damit überspringst du die ESP gezielt für genau diese eine App, während alle anderen Apps weiterhin wie gewohnt während der ESP installiert werden. So bleibt dein Enrollment schnell und zuverlässig, und gleichzeitig vermeidest du, dass die ESP an einer App hängen bleibt, die eine Benutzerinteraktion erwartet.

Besonders nützlich ist dieser Ansatz für Apps, die einen angemeldeten Benutzer benötigen, Pop-ups anzeigen oder den verfügbaren Desktop voraussetzen. Möchtest du die ESP für mehrere Apps überspringen, kannst du dasselbe Anforderungsskript einfach bei jeder App-Zuweisung erneut verwenden. Weitere Tipps rund um Intune und Autopilot findest du in meinen anderen Beiträgen auf jannikreinhard.com sowie in der offiziellen Microsoft Intune Dokumentation.

Comments are closed.