Получение кода завершения сценария оболочки (возвращаемое значение) - PullRequest
0 голосов
/ 10 января 2019

Попытка проверить файл конфигурации Logstash. При запуске следующей строки из командной строки Windows:

C:> C:\Logstash\bin\logstash -t -f C:\Logstash\config\my.config

Затем я могу проверить результат, используя

echo %errorlevel%

, который возвращает 1 в случае синтаксической ошибки. Теперь я хочу сделать это программно в C #, поэтому:

using System.Diagnostics;

var logstashProcess = Process.Start(@"C:\Logstash\bin\logstash", @"-t -f C:\Logstash\config\my.config");
logstashProcess.WaitForExit();
return logstashProcess.ExitCode == 0;

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

Мое предположение: поскольку C:\Logstash\bin\logstash является сценарием оболочки, я получаю ноль - успешно работает сама оболочка, а не процесс Logstash (который выполняется внутри этого сценария с использованием jruby). Есть идеи о том, как получить реальное возвращаемое значение? Будет ли работать пакетный файл? (Я предпочитаю не добавлять дополнительный сценарий к вечеринке на этом этапе)

...