Скрипт Powershell: не может прочитать возвращаемое значение выполненной программы - PullRequest
3 голосов
/ 11 января 2010

Я использую PowerShell для запуска сценария, который выполняет wget для извлечения веб-страницы (простой сценарий импорта базы данных) и анализа ее вывода (сообщение об ошибке или «ОК»).

Я использую код из ответа на этот предыдущий вопрос моего.

$a = c:\path_to_wget\wget.exe --quiet -O - "http://www.example.com/import_db"
$rc = $a.CompareTo("OK")
exit $rc

Когда результатом операции wget является 404 - и wget, вероятно, возвращает уровень ошибки 1 или 127 - я получаю следующее сообщение об ошибке из PowerShell:

You cannot call a method on a null-valued expression.

это, очевидно, относится к моему вызову функции CompareTo().

Однако wget выполняется и что-то выводит.

Я подозреваю, что в этом случае wget выводит на консоль ошибок, и это не может быть поймано моей операцией $ a.

Как я могу перенаправить вывод ошибки, чтобы она была обнаружена моим сценарием?

Мальчик, я уверен, что в этом месяце я буду королем вопросов в теге PowerShell! :)

1 Ответ

4 голосов
/ 11 января 2010

Для начала

# This will hold the last executed EXE return code
$LastExitCode
# For console apps, where 0 is true, else is false, this will hold either True or False
$?

Что касается чтения STDERR, я думаю, самый быстрый способ - запустить скрипт с перенаправлением потока

$a = c:\path_to_wget\wget.exe --quiet -O - "http://www.example.com/import_db" 2>&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...