Ich muss ein Skript mit PowerShell-Befehl "& Skriptname" ausführen, und ich würde es wirklich mögen, wenn der Exitcode, den ich von PowerShell erhalten habe, derselbe ist Der Exit-Code, den das Skript selbst zurückgegeben hat. Leider gibt Powershell 0, wenn das Skript 0 zurückgibt, und 1, wenn das Skript jeden Wert ungleich Null zurückgibt, wie unten dargestellt:- Der Beendigungscode des Befehls ist nicht identisch mit dem Exitcode des Skripts
PS C:\test> cat foo.ps1
exit 42
PS C:\test> ./foo.ps1
PS C:\test> echo $lastexitcode
42
PS C:\test> powershell -Command "exit 42"
PS C:\test> echo $lastexitcode
42
PS C:\test> powershell -Command "& ./foo.ps1"
PS C:\test> echo $lastexitcode
1
PS C:\test>
mit [Environment] :: Exit (42) fast funktioniert:
PS C:\test> cat .\baz.ps1
[Environment]::Exit(42)
PS C:\test> powershell -Command "& ./baz.ps1"
PS C:\test> echo $lastexitcode
42
PS C:\test>
Außer wenn das Skript interaktiv ausgeführt wird, wird die gesamte Shell beendet. Irgendwelche Vorschläge?
Ich glaube, Sie wollen mit 'exit $ lastexitcode' in Ihrem' -Command' Skript beenden – ProfessionalAmateur