Wie kann man eine Anwendung mit PowerShell im Hintergrund ausführen?

Melden
  1. Einleitung
  2. Grundprinzip des Hintergrundlaufens in PowerShell
  3. Verwendung von Start-Process zum unsichtbaren Start
  4. Hintergrundjobs in PowerShell
  5. Alternative: Nutzung von .NET-Klassen
  6. Fazit

Einleitung

Beim Arbeiten mit PowerShell stellt sich oft die Frage, wie man eine Anwendung oder ein Skript so starten kann, dass es im Hintergrund weiterläuft,

ohne dass ein sichtbares Fenster geöffnet wird oder die aktuelle PowerShell-Sitzung blockiert wird. Das Ausführen von Programmen im Hintergrund kann

hilfreich sein, wenn lange laufende Prozesse automatisiert werden sollen, ohne dass der Nutzer direkt darauf aufmerksam gemacht wird.

Grundprinzip des Hintergrundlaufens in PowerShell

PowerShell bietet verschiedene Möglichkeiten, Prozesse zu starten und dabei zu steuern, wie und wo sie laufen. Im einfachsten Fall startet man ein

Programm mit Start-Process, das standardmäßig ein Fenster öffnet und unabhängig von der PowerShell-Sitzung läuft. Für ein wirklich

unsichtbares Ausführen im Hintergrund muss man aber zusätzliche Parameter nutzen. Dabei geht es vor allem darum, ob das Fenster der Anwendung sichtbar

ist und ob die PowerShell auf das Ende des Prozesses wartet oder sofort wieder eine Eingabe ermöglicht.

Verwendung von Start-Process zum unsichtbaren Start

Mit dem Cmdlet Start-Process kann man den Parameter -WindowStyle verwenden, um das Fenster zu steuern. So kann man beispielsweise

Start-Process -FilePath "Anwendung.exe" -WindowStyle Hidden nutzen, damit das Fenster nicht angezeigt wird. Allerdings ist das nur bei Programmen

wirksam, die ein Fenster öffnen. Konsolenanwendungen oder Skripte können sich anders verhalten. Zusätzlich kann der Parameter -NoNewWindow

Hintergrundjobs in PowerShell

PowerShell unterstützt mit Start-Job das Erstellen von Hintergrundjobs, die unabhängig von der aktuellen Eingabeaufforderung laufen.

Dabei wird ein Cmdlet oder Skriptblock asynchron ausgeführt. Allerdings eignen sich diese Hintergrundjobs meist nur für PowerShell-Skripte und nicht

Alternative: Nutzung von .NET-Klassen

Für komplexere Anforderungen kann man die .NET-Klasse System.Diagnostics.Process nutzen. Dort lässt sich ein Prozess mit angepassten Startinformationen

erzeugen, zum Beispiel unsichtbar im Hintergrund. Durch das Setzen von ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden und

ProcessStartInfo.CreateNoWindow = true lässt sich der Prozess quasi unsichtbar ausführen.

Fazit

Um eine Anwendung in PowerShell im Hintergrund auszuführen, gibt es also mehrere Ansätze: Für einfache Fälle reicht Start-Process mit

dem Parameter -WindowStyle Hidden. Für PowerShell-eigene Skripte sind Hintergrundjobs eine Möglichkeit. Bei Bedarf an vollständigem

unsichtbarem Start ohne Fenster öffnet sich die Option, .NET-Klassen zu nutzen, was mehr Kontrolle gibt. Welcher Weg ideal ist, hängt vom konkreten

0

Kommentare