Zum Inhalt
Kaffeeundcode

Sektion 37: PSAppDeployToolkit (PSADT): Der Gold-Standard für Paketierung

Warum das PSAppDeployToolkit zum Standard für Paketierung geworden ist: Aufbau, Vorteile gegenüber nackten Installern und Einsatz mit Intune.

Intune-Kurs · Teil 37 von 45 · Block F: App-Management

Was Sie in dieser Sektion lernen

  • Grundkonzepte: Was macht PSADT eigentlich?
  • Praxis-Implementierung: Dein erstes PSADT-Paket
  • Best Practices für Enterprise-Deployments
  • Troubleshooting: Wenn die Installation scheitert

ca. 5 Min. Lesezeit · Alle Sektionen im Überblick

Einleitung

Wer schon einmal versucht hat, eine komplexe Software-Suite über Microsoft Intune zu verteilen, weiß: Die native .intunewin-Paketierung ist ein notwendiges Übel, aber sie ist starr. Ein einfacher Installationsbefehl wie setup.exe /silent reicht in der Enterprise-Welt oft nicht aus. Was passiert, wenn der Benutzer die App gerade geöffnet hat? Was, wenn ein spezifischer Registry-Key vorab gesetzt werden muss? Oder wenn die Installation nur erfolgreich ist, wenn ein bestimmter Dienst gestoppt wurde?

Hier kommt das PSAppDeployToolkit (PSADT) ins Spiel. PSADT ist kein Tool von Microsoft, sondern ein Community-getriebenes Framework, das auf PowerShell basiert und faktisch zum Industriestandard für die professionelle Softwareverteilung geworden ist. Es verwandelt eine simple Installation in einen kontrollierten Prozess. In dieser Masterclass lernst du, warum PSADT das fehlende Puzzleteil in deiner Intune-Strategie ist und wie du es implementierst, um die Fehlerquote bei App-Deployments gegen Null zu senken.

Grundkonzepte: Was macht PSADT eigentlich?

Im Kern ist PSADT ein Wrapper. Anstatt dass Intune direkt die setup.exe aufruft, startet Intune das Toolkit (Deploy-Application.ps1), und dieses steuert dann die eigentliche Installation. Der größte Vorteil ist die Standardisierung. Jedes Paket folgt der gleichen Struktur, nutzt die gleichen Logging-Mechanismen und bietet die gleichen Interaktionsmöglichkeiten für den Endbenutzer.

Die Architektur des Toolkits

Ein PSADT-Paket besteht aus einer fest definierten Ordnerstruktur:

  • AppDeployToolkit: Enthält die Logik, die PowerShell-Module und die GUI-Elemente. Diese Ordner werden nicht verändert.
  • Files: Hier liegen die eigentlichen Installationsdateien (MSI, EXE, Config-Dateien).
  • Deploy-Application.ps1: Das „Gehirn“ des Pakets. Hier definierst du, was vor, während und nach der Installation passieren soll.
  • AppDeployToolkitConfig.xml: Globale Einstellungen für das Toolkit (z. B. Logging-Pfade).

Der Lifecycle einer Installation

PSADT unterteilt den Prozess in fünf klar definierte Phasen, die in der Deploy-Application.ps1 angesprochen werden:

  1. Pre-Installation: Prüfung von Voraussetzungen, Schließen von Anwendungen, Deinstallation alter Versionen.
  2. Installation: Ausführen des eigentlichen Installationsbefehls.
  3. Post-Installation: Konfiguration der Software, Import von Einstellungen, Bereinigung.
  4. User Interaction: Dialoge mit dem Benutzer (z. B. „Bitte speichern Sie Ihre Arbeit, da der PC neu gestartet werden muss“).
  5. Logging: Lückenlose Dokumentation jedes Schritts in einem zentralen Logfile.

Praxis-Implementierung: Dein erstes PSADT-Paket

Lass uns ein reales Beispiel nehmen: Wir verteilen den Google Chrome Browser, müssen aber sicherstellen, dass alle offenen Browser-Fenster geschlossen werden und ein spezieller Unternehmens-Policy-Key in der Registry gesetzt wird.

Schritt 1: Vorbereitung

Lade das aktuelle PSAppDeployToolkit herunter und erstelle einen neuen Ordner für dein Paket. Kopiere die ChromeStandaloneEnterprise64.msi in den Ordner Files.

Schritt 2: Die Deploy-Application.ps1 konfigurieren

Öffne die Deploy-Application.ps1. Du musst dich auf die Sektion INSTALLATION konzentrieren. Hier ist ein praxisnahes Beispiel, wie der Code aussieht:

PowerShellKlick markiert alles · Strg+C kopiert
# ==========================================================================================
# INSTALLATION
# ==========================================================================================
## 1. Voraussetzungen prüfen und Apps schließen
Show-InstallationWelcome -CloseApps 'chrome' -AllowDefer -CloseAppsCountdown 60

## 2. Registry-Key für Unternehmensrichtlinie setzen (Pre-Install)
Set-RegistryKey -Key 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome' -Name 'ManagedBookmarks' -Value '1' -Type DWord

## 3. Die eigentliche Installation ausführen
Execute-MSI -Action 'Install' -Path 'ChromeStandaloneEnterprise64.msi'

## 4. Post-Installation: Zusätzliche Konfiguration
# Beispiel: Eine Datei vom Server in das Benutzerprofil kopieren
Copy-File -Source 'Files\company_bookmarks.html' -Destination "$envUSERPROFILE\Bookmarks"

Schritt 3: Das Paket für Intune vorbereiten

Da Intune keine Ordnerstrukturen nativ „versteht“, müssen wir das gesamte PSADT-Verzeichnis in eine .intunewin Datei packen. Nutze dazu das Microsoft Win32 Content Prep Tool.

  • Source Folder: Dein PSADT-Projektordner.
  • Setup File: Deploy-Application.exe (Das Toolkit liefert einen Wrapper mit, damit du nicht manuell PowerShell-Execution-Policies umgehen musst).
  • Output Folder: Dein Zielordner für die .intunewin Datei.

Schritt 4: Intune-Konfiguration

Beim Hochladen in Intune nutzt du folgende Befehle:

  • Install Command: Deploy-Application.exe
  • Uninstall Command: Deploy-Application.exe -Uninstall
  • Install Behavior: System

Best Practices für Enterprise-Deployments

Um PSADT wirklich professionell einzusetzen, solltest du dich an folgende Gold-Regeln halten:

1. Nutze die eingebauten Funktionen statt roher PowerShell

Vermeide es, in der Deploy-Application.ps1 Standard-PowerShell-Befehle wie Start-Process oder Remove-Item zu verwenden. Nutze stattdessen die PSADT-Funktionen:

  • Execute-MSI statt msiexec /i ... (bietet besseres Logging und Fehlerbehandlung).
  • Execute-Process statt Start-Process (wartet auf den Exit-Code und loggt diesen).
  • Set-RegistryKey statt Set-ItemProperty.

2. Benutzerinteraktion mit Bedacht einsetzen

In einer modernen Cloud-Umgebung stören Pop-ups die Produktivität. Nutze Show-InstallationWelcome nur, wenn es absolut notwendig ist (z. B. bei Neustarts). Setze den Parameter -CloseAppsCountdown, um dem Nutzer Zeit zu geben, seine Arbeit zu speichern.

3. Versionierung und Standardisierung

Erstelle dir eine eigene Master-Vorlage für deine Pakete. Jedes Paket sollte:

  • Die gleiche Version des Toolkits verwenden.
  • Ein konsistentes Benennungsschema für die Logfiles haben.
  • Immer einen -Uninstall Pfad definieren, der das System sauber hinterlässt.

Troubleshooting: Wenn die Installation scheitert

Einer der größten Vorteile von PSADT ist das Logging. Du musst nicht mehr raten, warum eine App mit Fehler 0x80070005 abgebrochen ist.

Wo finde ich die Logs?

Standardmäßig schreibt PSADT alle Logs nach: C:\Windows\Logs\Software. Dort findest du für jedes Paket eine eigene Logdatei. Suche im Log nach folgenden Keywords:

  • [EXIT CODE]: Zeigt an, mit welchem Code die MSI oder EXE beendet wurde.
  • [ERROR]: Markiert kritische Fehler im Toolkit-Ablauf.
  • [WARNING]: Zeigt an, dass eine App nicht geschlossen werden konnte oder ein optionaler Schritt übersprungen wurde.

Häufige Fehlerquellen

  • Execution Policy: Wenn du die Deploy-Application.ps1 direkt startest, blockiert Windows oft das Skript. Nutze immer die Deploy-Application.exe, da diese die Execution Policy für den Prozess-Aufruf temporär auf Bypass setzt.
  • 64-Bit vs. 32-Bit: Intune startet Win32-Apps standardmäßig im 32-Bit Kontext (SysWOW64). Wenn du Registry-Keys in HKEY_LOCAL_MACHINE\SOFTWARE schreiben willst, landen diese in SOFTWARE\WOW6432Node. Nutze im Toolkit die entsprechende Logik, um den Registry-Hive korrekt anzusprechen.

Fazit

Das PSAppDeployToolkit ist weit mehr als nur ein Installations-Skript; es ist ein Framework für Vorhersagbarkeit. Durch die Trennung von Installationslogik (Toolkit) und App-Daten (Files) sowie die tiefgreifende Integration von Logging und Benutzerkommunikation hebst du dein Paketmanagement auf ein neues Level.

In einer Umgebung, in der Intune die zentrale Steuerung übernimmt, ist PSADT die Versicherung, dass deine Software nicht nur „irgendwie“ installiert wird, sondern präzise, sauber und dokumentiert. Wenn du die hier beschriebenen Muster – insbesondere die Nutzung der integrierten Funktionen und das konsequente Logging – anwendest, reduzierst du deine Support-Tickets nach einem Software-Rollout massiv.

Zusammenfassung für die Praxis:

  • Struktur: Files für Daten, Deploy-Application.ps1 für Logik.
  • Phasen: Pre-Install (Apps schließen) → Install (Execute-MSI) → Post-Install (Config).
  • Intune: Verpacken als .intunewin, Start via Deploy-Application.exe.
  • Log-Check: C:\Windows\Logs\Software ist dein bester Freund.

↑ Zur Kursübersicht: Intune-Kurs (alle Sektionen)