При вызове сценария powershell из пакетного файла и выходе со значением, уровень ошибки равен 0 в пакетном файле, а не значением выхода
Я пытался использовать приведенный ниже код для вызова сценария powershell, который завершается с номером, который должен быть уровнем ошибки в пакетном файле, но когда я проверяю% errorlevel% в пакетном файле, он всегда равен нулю.
Я вызываю его в цикле For, так как мне нужно, чтобы он возвращал некоторый текст.
Это скрипт powershell:
# TestReturnValAndCode.ps1
$DataIn = $args[0]
$ReturnVal="You passed in the text '" + $DataIn + "'"
$ReturnVal
exit 1234
Это командный файл:
:: testpscaller.bat
@echo off
set "BaseFolder=C:\temp\test"
set "TestPSScript=%BaseFolder%\TestReturnValAndCode.ps1"
set "TestValue=Test This Text"
for /f "delims=" %%a in ('powershell -executionpolicy bypass -file
"%TestPSScript%" "TestValue"') do set "ReturnVal=%%a"
@echo ErrorLevel=[%ErrorLevel%]
@echo ReturnVal=[%ReturnVal%]
Это результат:
Равно = [0]
ReturnVal = [Вы передали текст «TestValue»]
ErrorLevel должен быть 1234.
Что мне нужно сделать, чтобы получить и мое текстовое значение, и уровень ошибки (это не слишком клунки / клудги)