Как обрабатывать ошибки tf.exe в скрипте PowerShell - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть сценарий PowerShell, который запускает tf.exe команды.

$tfExe = {C:\path\to\tf.exe}
& $tfExe checkout / checkin etc.

Если я пытаюсь запустить команду checkin в файл, который не изменился, я получил ошибку:

Следующие изменения не были зарегистрированы, поскольку элемент не был изменен.

Отмена редактирования: {C: \ path \ to \ file}

Проблема в том, что я запускаюсценарий в сборке TFS, и сборка завершается с ошибкой:

[ошибка] Нет оставшихся изменений для регистрации.

Но это ненастоящая ошибка, если нет изменений, поэтому не регистрируйтесь, это хорошее поведение для меня.

Как я могу обработать tf.exe ошибки?

Я пытался с try catch, но он не работал, хотя есть ошибка, блок try исполняется, а не catch.

Я пытался также с переменной получить вывод $test = & $tfExe checkin ... ивсе равно получаю ошибку (а переменная пуста).

1 Ответ

0 голосов
/ 23 декабря 2018

PowerShell не понимает ошибки из собственных исполняемых файлов.Вы должны проанализировать вывод, чтобы принять решение.Вы можете перенаправить поток ошибок в выходной поток.

$Output = tf.exe … 2>&1

$Output.exception.message -match 'There are no remaining'
...