Holen Sie sich den Exit-Code aus dem Startprozess in PowerShell

John Wachira 15 Februar 2024
Holen Sie sich den Exit-Code aus dem Startprozess in PowerShell

Dieser Artikel veranschaulicht, wie wir den Exit-Code aus dem Befehl Start-Process in PowerShell erhalten können.

Das Cmdlet Start-Process ermöglicht es uns, einen oder mehrere Prozesse in unseren Maschinen von PowerShell aus auszuführen. Sie können das Cmdlet verwenden, um eine Anwendung auf Ihrem Computer zu starten.

Holen Sie sich den Exit-Code von Start-Process in PowerShell

Wenn Sie ein PowerShell-Skript ausführen, gibt die Konsole immer den Status der Ausführung zurück. PowerShell gibt Null zurück, wenn ein Skript erfolgreich ausgeführt wird, während eine nicht erfolgreiche Ausführung einen Wert ungleich Null zurückgibt.

Der Wert, der sich aus einer nicht erfolgreichen Skriptausführung ergibt, wird als Fehlercode bezeichnet.

Wie können wir den Exit-Code von Start-Process erhalten? Lassen Sie uns ein Beispiel verwenden, um das Konzept zu erklären.

Angenommen, wir möchten Notepad von PowerShell aus öffnen und den Exit-Code für das Skript abrufen. Wie gehen wir vor?

Beginnen wir mit der Definition eines Skripts zum Öffnen von Notepad aus PowerShell. Wir verwenden das Cmdlet Start-Process wie unten dargestellt:

Start-Process -FilePath "notepad.exe" -PassThru -Wait

Dieses Skript öffnet Notepad und wartet darauf, dass wir es manuell beenden. Wir müssen den Befehl jedoch in einer Variablen speichern, um den Exit-Code zu erhalten.

In unserem Fall speichern wir es in der Variablen $run. Unser Skript lautet:

$run = (Start-Process -FilePath "notepad.exe" -PassThru -Wait)

Nach dem Beenden von Notepad können wir nun den Exit-Code wie unten dargestellt abrufen:

$run.ExitCode

Dies gibt 0 zurück, da das Skript erfolgreich ausgeführt wurde.

Ausgangscode 1

Was ist, wenn wir nach dem Start von Notepad eine Verarbeitung im Hintergrund ausführen möchten? In einer solchen Situation lassen wir das -wait weg und verwenden stattdessen $run.WaitExit(), wie unten dargestellt:

$run = (Start-Process -FilePath "notepad.exe" -PassThru)
$run.WaitExit()

Nach dem Beenden von Notepad können wir den Exit-Code erhalten, wie unten gezeigt:

$run.ExitCode

Dies wird immer noch 0 zurückgeben, da das Skript erfolgreich war.

Abschließend können Sie den Exit-Code aus dem Cmdlet Start-Process erhalten, indem Sie den Befehl in einer Variablen speichern. Auf diese Weise können Sie den Befehl $.ExitCode ausführen, um den Exit-Code zu erhalten.

Wenn Sie einen Wert ungleich Null erhalten, zeigt dies an, dass das Skript nicht erfolgreich ausgeführt wurde.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn