Immer noch gibt es viel Applikationen, die sich nicht via MSI oder einer einfachen Installations-Routine installieren lassen. Hier kommt dann in Intune (Microsoft Endpoint Manager) die win32 App ins Spiel. Diese erlaubt es uns in Intune, Routinen und Abläufe in einem Script abzuhandeln und die Installation im Anschluss mit einem weiteren Script (Custom Detection Script) oder vordefinierten Erkennungsregeln (MSI, EXE, File oder Registry Key) zu prüfen.

In den vergangenen Jahren haben sich dadurch bei mir einige verschiedene Variationen an Erkennungsregeln angesammelt, welche ich hier versuche zu sammeln.

Übe den Button oberhalb findest du meine aktuelle Sammlung von Custom Detection Script für Intune win32 Apps. Wichtig ist, dass du jeweils nur einen der Blocks für deine Erkennungs-Regel verwendest. Wenn du wissen möchtest, wie ein win32 App im Allgemeinen aufgebaut ist und wie ich diese handhabe, findest du hier (my take on win32 apps - Intune) einen meiner vergangenen Blog-Beiträge.

In meinem GitHub Repository findest du aktuell folgende Erkennungsregeln:

  • Erkennung einer EXE oder einer Datei
  • Validation-File mit spezifischem Inhalt (beispielsweise eine Versionierung)
  • Vorhandene EXE mit exakter Ziel-Version
    • oder höherer Version
    • und zusätzlichem Registry-Key
  • Registry-Key Abgleich
  • Erkennung eines Scheduled Task
  • Erkennung eines Scheduled Task inklusive Version

Erklärung / Beispiel EXE mit exakter Version

Die Erkennungsregeln sind alle so aufgebaut, dass zunächst die Kriterien definiert werden:

$ProgramPath = "C:\Program Files\XXXXX\XXXXXX.exe"
$ProgramVersion_target = '1.0.2' 
$ProgramVersion_current = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ProgramPath).FileVersionCode language: PowerShell (powershell)


Die Definitionen werden anschliessen einander gegenübergestellt oder geprüft und wenn sie zutreffen, wird "Found it!" ausgegeben. Dies signalisiert Intune, dass das Paket erfolgreich installiert ist. Alternativ kannst das Script auch mit 'exit 0' beenden.

if($ProgramVersion_current -eq $ProgramVersion_target){
    Write-Host "Found it!"
}Code language: PowerShell (powershell)

Hast du weiter Erkennungsregeln, welche dir in deinem Alltag helfen oder an welchen du anstehst?
Lass es mich in den Kommentaren wissen. Ich ergänze meine Sammlung gerne.