2017-05-30 3 views
1

I durch eine Powershell-Anwendung mit Exit-Code kann:Powershell Benutzerdefinierte Exit-Code Beschreibung

exit 59 

Wie kann mit einer benutzerdefinierten Exit-Code Beschreibung verlassen?

exit 59, "Somethings Wrong" 
+0

Warum nicht 'Write-Host' verwenden, gefolgt von einem Exit-Code? Die Art und Weise, wie der Code oben eingegeben wurde, ist nicht korrekt, auf "exit" folgt ein numerischer Code, um den Exit-Code anzuzeigen. – t0mm13b

+0

Das mache ich gerade. Ich hatte gehofft, dass es weg war, um die Exit-Code-Beschreibung beim Beenden zu senden, anstatt vor dem Exit. – ArcSet

+0

Es gibt keine "benutzerdefinierte Exit-Code-Beschreibung". Ein Exit-Code ist eine Ganzzahl. –

Antwort

4

Sie können nicht. In der PowerShell-Umgebung können Cmdlets ein beliebiges .NET-Objekt (Strings, Exceptions usw.) zueinander zurückgeben. Wenn Sie jedoch beenden, wird der PowerShell-Prozess beendet und es kann an Windows zurückgegeben werden/der aufrufende Prozess ist eine Ganzzahl.

https://en.wikipedia.org/wiki/Exit_status#Windows

Es gibt nirgendwo eine eigene Beschreibung und keine Möglichkeit für etwas anderes zu setzen, um eine Beschreibung zu erhalten. Das sind Jahre der Legacy-Computing- und Rückwärtskompatibilitätseinschränkungen, bis die Prozessoren klein waren, der Speicher teuer war und die Rückgabewerte (ich spekuliere) ein Prozessorregisterwert oder ähnliches waren.

Wenn Sie in einer Eingabeaufforderung und diese Befehle ausführen:

c:\> powershell 
Windows PowerShell 
Copyright (C) 2014 Microsoft Corporation. All rights reserved. 

PS C:\> exit 10 

c:\> echo %ERRORLEVEL% 
10 

Sie sehen der Powershell-Prozess mit dem Rückgabewert von 10 verließ Aber es gibt kein %ERRORDESCRIPTION% oder ähnliches Standard-Feature, etwas anderes zu setzen. Es gibt einfach keine Maschinen der unteren Ebene für das, was Sie tun wollen.

Was Sie tun können, ist auf die Standardfehlerausgabe (stderr) schreiben mit Write-Error und wenn ein Programm Ihr Skript aufruft und stderr Ausgabe erfasst, kann es lesen. Oder Sie können einen Fehler in ein Ereignisprotokoll oder in eine Protokolldatei schreiben.

Aber jedes Schreiben muss geschehen, während Ihr Prozess läuft, weil Sie nichts tun können, nachdem Ihr Prozess beendet wurde.

+1

Abhängig von Ihrer Fehlereinstellung beendet write-error die Ausführung des Skripts nicht. 'throw' sollte auch hier erwähnt werden, denke ich. 'Write-Error" This ";" Hallo "' vs. 'throw" This ";" Hallo "' – Matt

Verwandte Themen