Это не будет хорошим ответом, потому что я не нашел документации, объясняющей это, но использование Exit, за которым следует число, похоже, не влияет на код выхода.
Следующеепример работает, с общей идеей, взятой из блога .Сначала создайте тестовый сценарий, подобный следующему:
$host.SetShouldExit(12345)
exit
Затем вызовите этот сценарий из командной строки Powershell, как в следующем примере:
$command = "C:\YourTestScriptPathAndName.ps1"
Powershell -NonInteractive -NoProfile -Command $command
Сценарий запустится и завершится, изатем мы можем проверить код выхода из приглашения Powershell, записав содержимое $ LASTEXISTCODE
$LASTEXITCODE
В этом случае $ LASTEXISTCODE будет содержать 12345.
В случае использования этого сTest-Path это выглядело бы так:
#using a path that does not exist
if(Test-Path -Path 'C:\nope'){
$host.SetShouldExit(1234)
}
else{
$host.SetShouldExit(2222)
}
Это устанавливает код выхода на 2222 при вызове из командной строки, но когда я вызываю этот тестовый скрипт из другого скрипта, а не из командной строки, $Переменная LASTEXITCODE по-прежнему имеет значение 0.