Мне нужно запустить script с помощью PowerShell -Command "& scriptname", и мне бы очень хотелось, чтобы код выхода, который я получил от PowerShell, был таким же, как и код выхода, который сам вернул script. К сожалению, PowerShell возвращает 0, если script возвращает 0 и 1, если script возвращает любое ненулевое значение, как показано ниже:
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>
Использование [Environment]:: Exit (42) почти работает:
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>
Кроме того, когда script запускается интерактивно, он выходит из всей оболочки. Любые предложения?