Определение успешности команды Powershell - PullRequest
15 голосов
/ 21 октября 2010

Привет, я новичок в Powershell, но у меня есть один вопрос. Я хочу иметь возможность определить, успешно ли выполнена команда, чтобы я мог давать содержательные сообщения хосту.

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

./appcmd set site /site.name:........................

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

Я думаю, что если я просто поставлю Write-Host "Successfully added binding" после этого оператора, он сработает после того, как appcmd был успешным.

Полагаю, мне нужно сделать что-то вроде:

$successful = ./appcmd set site /site.name:........................

но тогда $successful представляется строкой, содержащей результат msg?

Благодарен за любую помощь в этом! Приветствия

1 Ответ

17 голосов
/ 21 октября 2010

Предполагая, что appcmd является консольным exe, даже если произойдет ошибка, будет выполнена следующая строка в скрипте.

Если вы хотите проверить, не испортился ли EXE-файл, а EXE-файл использует стандартный код завершения 0, чтобы обозначить успех, то просто осмотрите специальную переменную $? сразу после вызова EXE-файла.Если это $ true, то EXE вернул 0 код выхода.

Если EXE-файл нестандартен с точки зрения кода завершения, он возвращается в случае успеха (возможно, он имеет несколько кодов успеха), а затем проверьте $LastExitCode, чтобы получить точный код выхода последнего возвращенного EXE-файла.

...