Шаг DevOps Powershell успешно вызывает bat-файл, но возвращает 1 - PullRequest
0 голосов
/ 09 июля 2019

Я вызываю bat-файл из шага в моем yaml-файле.Летучая мышь расположена локально на ПК, где находится агент сборки.
Летучая мышь успешно вызвана.Он изменяет переменную PATH и впоследствии запускает программу.Однако программа работает успешно, но после завершения этап сборки все еще помечается как неудачный, поскольку

[ошибка] PowerShell завершился с кодом «1».

В качестве справочной информациипочему я использую bat-файл вместо ps1: я переношу нашу текущую сборку, и она работает поверх центрального bat-файла.Я не хочу это менять.

Есть ли переменная окружения, которую я могу изменить, или что-то еще, что я могу сделать, чтобы PowerShell возвращает 0 вместо 1?

1 Ответ

2 голосов
/ 09 июля 2019

Рассматривали ли вы изменение кода завершения командного файла?

Коды выхода для пакетных файлов

Используйте команду EXIT / B% ERRORLEVEL% в конце пакетного файла, чтобы вернуть коды ошибок из командного файла

  • EXIT / B в конце командного файла остановит выполнение командного файла.
  • используйте EXIT / B <коды выхода> в конце пакетного файла для возврата пользовательских кодов возврата.
  • Переменная среды% ERRORLEVEL% содержит последний уровень ошибки в пакетном файле, который является последними кодами ошибок из последней выполненной команды. Чтобы узнать о переменной среды, см. Примечание ниже.

Примечание. Переменные среды - это набор динамических именованных значений, которые могут влияют на то, как запущенные процессы будут вести себя на компьютере. За Например, переменная окружения со стандартным именем может хранить местоположение, которое конкретная компьютерная система использует для хранения профиля пользователя это может варьироваться от одной компьютерной системы к другой.

В командном файле всегда полезно использовать среду переменные вместо постоянных значений. Поскольку ту же переменную получают расширен на разные значения на разных компьютерах.

Пример:

Пакетный файл для копирования файла в папку

md "C:manageengine" 
copy "\\sharename\foldername\samplefile.txt" "C:\manageengine" 
exit /b %ERRORLEVEL%

https://www.manageengine.com/products/desktop-central/returning-error-code-on-scripts-how-to.html

РЕДАКТИРОВАТЬ: Еще несколько мыслей по поводу проблемы - пакетный файл, вероятно, вернул 1 в качестве кода выхода, потому что одна из команд или программ, использованных в нем, возвратила некоторый код ошибки (или, по крайней мере, не вернуть 0 код выхода). Подводя итог, ваш вопрос был не очень ясен, главным образом потому, что вы не разделили все факторы и переменные в рамках вашей проблемы, таким образом, не зная, где проблема. Принудительное изменение кода выхода не является правильным способом решения вашей проблемы.

...