ich möchte während der Intune Paket Installation dem angemeldeten User eine Dialog-Box oder ein Reboot-Prompt anzeigen. Ich habe dazu schon ein Thema eröffnet möchte das aber hier nochmal breit zur Diskussion stellen da ich auch ein paar weitere Tests gemacht habe.
Mein NEO42 PSADT Paket schaut so aus, dass ich eine Install/Uninstall Methode ausgefählt habe - das Script soll einfach mal leer durchlaufen.
Im Bereich „CustomBegin“ der PS1 habe ich folgende Codezeile eingefügt:
Führe ich nun die Deploy-Application.ps1 via psexec aus dem SYSTEM Kontext aus, wird mir die Hello World Dialog Box im User-Kontext angezeigt - das PSADT läuft im Interactive Mode.
Importiere ich nun das Paket über eine Pipepine nach Intune und führe es dort aus, wird mir die Hello World Dialog Box NICHT mehr angezeigt - das PSADT läuft im NonInteractive Mode.
Als zweiten Test habe ich dann ein „Standard“ PSADT Paket gebaut und die Show-DialogBox Zeile im Bereich „$installPhase = ‚Installation‘“ eingefügt. Das Paket selbst habe ich mit dem IntuneWinAppUtil.exe Wrapper in ein .intunewin konvertiert und manuell hochgeladen. Das PSADT wird dann über die ServiceUI.exe aufgerufen. (Soweit alles normal)
Lasse ich das dann aus dem Unternehmensportal installieren wird mir die Dialog Box angezeigt:
Intune kann also Pakete als SYSTEM installieren und trotzdem mit dem angemeldeten User in Interaktion treten (das machen die NEO42 Pakete ja z.B. beim AskProcessToKill ja auch).
Kann man über die Pipeline importierte NEO42 Pakete auch im InteractiveMode ausführen lassen?
so wie ich das sehe, kann Intune es eben nicht – sonst wäre ja die ServiceUI.exe nicht notwendig
Ich gehe davon aus, dass sich das neo42-Paket auf dem zweiten (manuellen) Weg mit der ServiceUI.exe ebenso verhalten hätte.
Die Nutzung der ServiceUI.exe haben wir in einer frühen Phase für uns ausgeschlossen, da wir schlechte Erfahrungen mit der Auslieferung zusätzlicher Dateien gemacht haben. Zudem hat es vor zwei Jahren nicht den Anschein gemacht, dass Microsoft dieses Projekt noch pflegt und es gab bereits Artikel über Virenscanner die die Exe blockieren. Aus diesem Grund haben wir in der AppDeployToolkitExtensions.cs eigene Methoden hinterlegt, die diese Aufgabe zuverlässig übernehmen.
Ich sehe zur Lösung drei Optionen, die sich in einer Pipeline umsetzen lassen sollten:
Hinzufügen der ServiceUI.exe und eines weiteren Skripts mit der Ziel-UI in das Paket.
Nutzung unserer Mechanismen, um einen eigenen Dialog anzuzeigen. Einen Startpunkt findest du in der Funktion Show-NxtWelcomePrompt. Der [PSADTNXT.SessionHelper] kümmert sich um die Magie.
Im PSADT gibt es noch die Funktion Execute-ProcessAsUser. Hier wird allerdings mit dem Windows Task Scheduler gearbeitet, was beispielsweise bei EDR-Systemen auch nicht besonders gut ankommt.
Klappt super als Warnhinweis und Abfrage für User, z. B. wenn ein Paket während des Installationsprozesses die Netzwerkverbindung kurz unterbricht, Peripherie-Treiber aktualisiert oder es zu anderen Störungen kommen kann.
Da bei den alten Winform2-Fenstern kein Ladebalken verfügbar ist, schreibe ich am Ende des Textes einfach die Zeitspanne und den Start-Zeitpunkt des Fensters dazu.
Beispiel:
"Aktuell findet im Hintergrund die Installation der Software „…“ statt. Im weiteren Verlauf kann es kurzzeitig zu Netzwerkunterbrechungen kommen.
Bitte klicken Sie OK, um fortzufahren.
Der Prozess wird automatisch nach 4 Stunden fortgesetzt!
(Beginn: 11:32 Uhr)"