Seite 1 von 1

[GELÖST] Verwendung der Funktion start_interactive_process für die Benutzerinteraktion während der Bereitstellung

Veröffentlicht: 5. Dez. 2024 - 10:12 Uhr
von Fobrien
Guten Morgen,

Ich erlaube mir, dieses Thema im Anschluss an den Beitrag anzusprechen (viewtopic.php?p=14558#p14558) die ich im Hinblick auf die mögliche Interaktion mit Benutzern beim Bereitstellen eines Pakets mit WAPT eröffnet hatte.

Leider funktionierte zwar mein Befehlszeilenaufruf eines externen PowerShell-Skripts und die Anzeige eines Popups für den Benutzer beim lokalen Testen mit PyScripter einwandfrei, aber bei der Bereitstellung des Pakets über WAPT sah die Sache ganz anders aus, da nichts angezeigt wurde.

Ich wollte also diesen PowerShell-Skriptaufruf mithilfe der Funktion anpassen start_interactive_process Wie Simon bereits angedeutet hatte, gelang es mir, die folgende Befehlszeile zu erstellen, die lokal mit PyScripter einwandfrei funktioniert:

Code: Alle auswählen

notification_folder = makepath(basedir, "Notification")

for session_id in get_active_sessions():
	popup=notification_folder + "\\PsExec.exe"
        popup_command_exec="-s powershell.exe " + notification_folder + "\\ServiceUI.exe C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoLogo -Noprofile -WindowStyle Hidden -file " + notification_folder + "\\Notification.ps1 -config " + notification_folder + "\\upgrade.xml"
        start_interactive_process(popup, popup_command_exec, session_id=session_id,minimize=True)
Wenn ich das Paket jedoch veröffentliche und die Bereitstellung auf einem Computer teste, erhalte ich folgende Fehlermeldung:

Bild

Allerdings ist das betreffende Verzeichnis völlig leer, da es vom Paket nur gelegentlich und vorübergehend verwendet wird, denke ich (ich weise darauf hin, dass alle notwendigen Dateien von Anfang an im Paketverzeichnis vorhanden sind).

Meine Frage lautet: Ist dieses Phänomen normal und welche Funktion hat es? start_interactive_process Kann es auf Dateien aus dem nativen Verzeichnis des Pakets zugreifen?

Dank im Voraus.

Fred

Betreff: Verwendung der Funktion start_interactive_process für die Benutzerinteraktion während der Bereitstellung

Veröffentlicht: 5. Dez. 2024 - 10:53 Uhr
von dcardon
Hallo Frédéric,

ich nehme an, du rufst diese Funktion innerhalb der `install()`-Funktion auf (am besten wäre es, wenn du das gesamte Skript hättest). Der Paketinhalt wird in ein temporäres Verzeichnis in `%TEMP%` entpackt. Falls `psexec.exe` im Paket vorhanden ist, wird es ebenfalls in das temporäre Verzeichnis entpackt. Allerdings wird diese Datei von den meisten Antivirenprogrammen automatisch gelöscht, daher solltest du das zuerst überprüfen.

Viele Grüße,

Denis

Betreff: Verwendung der Funktion start_interactive_process für die Benutzerinteraktion während der Bereitstellung

Veröffentlicht: 6. Dez. 2024 - 15:48 Uhr
von Fobrien
Hallo Denis,

Danke für Ihre Antwort.
Tatsächlich wird das Skript in dem Teil ausgeführt def install(): Und hier ist der vollständige Code:

Code: Alle auswählen

def install():

	notification_folder = makepath(basedir, "Notification")

	for session_id in get_active_sessions():
		popup=notification_folder + "\\PsExec.exe"
        	popup_command_exec="-s powershell.exe " + notification_folder + "\\ServiceUI.exe C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoLogo -Noprofile -WindowStyle Hidden -file " + notification_folder + "\\Notification.ps1 -config " + notification_folder + "\\upgrade.xml"
        	start_interactive_process(popup, popup_command_exec, session_id=session_id,minimize=True)
        
        sys.exit(0)
Ich habe parallel versucht, ein Verzeichnis zu erstellen, auf das alle Benutzer lokal Zugriff haben, die benötigten ausführbaren Dateien (einschließlich "PsExec.exe") hinein zu kopieren und sie dann von meinem Python-Skript aus aufzurufen.
Das Skript funktioniert einwandfrei mit PyScripter, das Verzeichnis wird korrekt erstellt und die Dateien werden nicht vom Antivirenprogramm gelöscht.

Allerdings funktioniert es auch nicht, wenn es als Paket ausgeführt wird.

Gibt es bei der Funktion bestimmte Punkte, die zu beachten sind? start_interactive_process ?

Dank im Voraus.

Fred

Betreff: Verwendung der Funktion start_interactive_process für die Benutzerinteraktion während der Bereitstellung

Veröffentlicht: 10. Dez. 2024 - 16:21 Uhr
von Fobrien
Hallo,

ich konnte das Problem endlich durch Änderung der Befehlszeilensyntax lösen, und die Benachrichtigung wird nun korrekt im Benutzerkontext angezeigt.
Ich habe mich jedoch für eine geplante, kurzlebige Aufgabe entschieden, um die Prozesse „PsExec.exe“ und „ServiceUI.exe“ zu vermeiden, deren Verhalten von EDRs manchmal falsch interpretiert wird.

Fred

Betreff: Verwendung der Funktion start_interactive_process für die Benutzerinteraktion während der Bereitstellung

Veröffentlicht: 12. Januar 2026 - 23:58 Uhr
von luc91
Ich denke, Ihre Lösung mit der geplanten Aufgabe war letztendlich einfacher. Sie umgeht die Probleme mit PsExec und ServiceUI, insbesondere im Zusammenhang mit Antivirensoftware oder EDR, die diese blockieren können.