Игнорировать строку в командном файле от powershell? - PullRequest
0 голосов
/ 26 февраля 2019

Предположим, у меня есть следующий пакетный файл с именем openPS.bat:

@echo off

SET psFile="%1"

Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5

if %errorlevel% NEQ 0 GOTO :error
GOTO :end
:error
echo Exit Code: %ERRORLEVEL%
echo Failed!

EXIT /B %ErrorLevel%
:end
echo Exit Code: %ERRORLEVEL%
echo Success!

Этот пакетный файл используется для запуска сценария powershell в консоли CMD:

C:> openPS.bat script.ps1

script.ps1 запускается несколько раз оберткой, поэтому при каждом успешном выполнении он выдает exit code 0

exit code 0

Могу ли я как-то игнорировать эту строку в openPS.bat через powershell?

EXIT /B %ErrorLevel%
:end
echo Exit Code: %ERRORLEVEL%
echo Success!

я знаю, что могу REM, но мне нужно вывести одно сообщение об успехе после всехциклы script.ps1 завершены.поэтому он должен остаться, и я не нашел способа подавить все эти коды выхода 0.если я использую out-null в сценарии powershell, я теряю все остальные выходные данные, поэтому out-null не вариант.

1 Ответ

0 голосов
/ 26 февраля 2019

Вместо проверки и показа "Успех!"для каждой итерации используйте скрипт-обертку, чтобы указать завершение.На экране будут отображаться только сообщения об ошибках и завершении.

Вы также можете использовать переменную в скрипте-обертке для отслеживания возвращаемых значений, сработает простая сумма и проверить ее на 0 при выполнении.всех итераций завершено.Затем отобразите успех или неудачу.

@echo off

SET psFile="%1"

Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5

if %errorlevel% NEQ 0 GOTO :error
GOTO :end
:error
echo Exit Code: %errorlevel%
echo Failed!

:end
EXIT /B %errorlevel%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...