Freigeben über


Windows PowerShell Exit Codes: wie nutzen?

Als kurze Ergänzung zum MVP Tag und für alle PowerShell Fans: Windows PowerShell bietet (wie andere Skriptsprachen auch) die Möglichkeit, eigene Exit-Codes zu definieren. In PowerShell schreibt man dazu z.B. einfach den Befehl Exit 123, um den Rückgabewert 123 zu übergeben.

Ist dies jedoch in einem Skript eingebettet und ruft man das Skript von einer Batch-Datei auf, so lautet bekommt man nicht diesen Wert. Lautet das Skript z.B. Test-exitcode.ps1 mit Inhalt exit 123, dann erzeugt die Zeile

c:\> PowerShell -command "& { c:\test-exitcode }"

lediglich als Rückgabewert 0:

c:\> echo %errorlevel

0

Das liegt daran, dass der Rückgabewert hier von der PowerShell EXE kommt, welche erfolgreich beendet wurde und somit den Wert 0 generiert. Um den eigentlich gewünschten Wert 123 zu erhalten, muss man dies lediglich der PowerShell mitteilen:

C:\>powershell -command "& { c:\test-exitcode.ps1 ; exit $lastexitcode }"

C:\>echo %errorlevel%
123

So einfach ist das.

Comments

  • Anonymous
    January 01, 2003
    Ich habe per Add-PSSnapin die SCOM Command Shell eingebunden. Per Power Shell lassen sich SCOM-tasks starten. Allerdings gelingt es mir nicht, diese Command Shell entsprechend mit dem richtigen Returncode zur verlassen. Wille