Доступ к состоянию завершения предыдущей команды можно получить через специальную переменную $?
.
Обратите внимание, что это лучше всего работает с неразрывными ошибками (как вы могли бы получить от Move-Item).Завершающие ошибки являются результатом прямого throw
или исключения, генерируемого в .NET, и они изменяют поток вашего кода.Лучше всего использовать оператор trap
или try/catch
для наблюдения за этими типами ошибок.
Еще одна вещь, на которую следует обратить внимание при использовании WRT $?
и консоли exe, заключается в том, что PowerShell предполагает, что код выхода 0 означает успех(т.е. $?
установлен на $true
), а все остальное означает сбой ($?
установлен на $false
).К сожалению, не все консольные exe-программы соблюдают соглашение о коде выхода, например, может быть несколько кодов успеха и один код ошибки (0).Для тех exe, которые не следуют правилам кода выхода, используйте $LastExitCode
, как указано в комментариях, чтобы определить успех или неудачу.