PowerShell verstecktes Start und Stop Script

meilon

Erfahrenes Mitglied
Hallo zusammen!

Wir möchten eine Anwendung in unseren XenApp 6 Presentation Server von den Arbeitsplätzen wegziehen. Dazu habe ich mal in unser Testfarm die Software installiert und ein Startscript geschrieben, da es auf mehreren Anwendungen basiert.

Über
Code:
[Diagnostics.Process]::Start('C:\Pfad\zur\app.exe', 'argumente')
starte ich also jede einzelne App, was auch wunderbar funktioniert. Jetzt habe ich aber natürlich das Problem, dass sobald ich die einzige Fensterapplikation (=Hauptapplikation) beende, Citrix natürlich noch die ganzen Helferapps, die sich im Tray aufhalten, noch am laufen lässt und so die Session nie beendet wird. Selbst wenn der User seinen PC herunterfährt, dann bleiben die Anwendungen auf dem Server laufen.

Jetzt kommt meine Frage: Wie kann ich ein Powershell Script versteckt starten und die Laufzeit der Hauptanwendung überwachen? Sobald die Hauptanwendung beendet wird, sollen auch alle weiteren Anwendungen beendet werden.

Ist das möglich, wenn ja, wie?
 
Danke für die zwei links, aber mit Prozessmanagement mit .Net kenne ich mich schon einiger maßen gut aus. Der Artikel hat mir aber trotzdem hier und da noch ein paar Infos auf den weg gegeben.

Jetzt wo das Problem schon ein paar Stunden alt ist habe ich mir noch so ein paar Gedanken gemacht, die ich morgen mal ausprobieren werde! Ich denke, so sollte das Programm funktionieren, habe etwas zu umständlich gedacht.
 
Problem gelöst, habe gestern echt zu kompliziert gedacht. Durch C# kenne ich mich ja eigentlich schon gut in .NET aus, PowerShell ist eben noch etwas Neuland.

Das Script muss mit -WindowStyle Hidden gestartet werden (muss noch vor -command kommen), damit auch kein Fenster erscheint. Mein Script sieht im Grunde so aus:

Code:
$helperApp = [Diagnostics.Process]::Start('C:\Path\To\Helper\app.exe')
$myApp = [Diagnostics.Process]::Start('C:\Path\To\Main\app.exe')

$myApp.WaitForExit()

$helperApp.CloseMainWindow()
[Threading.Thread]::Sleep(2000)
if ($helperApp.HasExited -eq $True) {
} else {
    $helperApp.WaitForExit(2000)

    $helperApp.Kill()
}

Vielleicht hilft mein Code ja jemandem mal.
 
Zurück