Обычно первое, что нужно попробовать - это обернуть все в try...catch
блок.
try {
$ErrorActionPreference='Stop'
az group deployment create -g ....
# Error in az group
# More az cli commands
}
catch {
Write-Host "ERROR: $Error"
}
Аааа, и это не сработает.
Это это когда вы почесываете голову и понимаете, что мы имеем дело с Azure CLI командами, а не Azure PowerShell . Они не являются родными командами PowerShell, которые соблюдают $ErrorActionPreference
, вместо этого (как бы плохо это не звучало) мы должны обрабатывать каждую команду Azure CLI независимо, как если бы мы выполняли отдельные программы (в бэкэнде, * 1034). * CLI - это в основном псевдонимы, которые запускают команды python. По иронии судьбы большинство Azure команд PowerShell являются просто оболочками PowerShell вокруг Azure команд CLI; -)).
Зная, что CLI Azure не будет бросить завершающую ошибку, вместо этого мы должны рассматривать ее как программу и смотреть на код возврата (хранящийся в переменной $LASTEXITCODE
), чтобы увидеть, была ли она успешной или нет. Как только мы оценим это, мы можем затем throw
выдать ошибку:
az group deployment create -g ....
if(!$LASTEXITCODE){
Write-Host "ERROR: in Az Group"
Throw "ERROR: in Az Group"
}
. Затем она может быть реализована в блоке try...catch
, чтобы остановить выполнение следующих команд:
try {
az group deployment create -g ....
if(!$LASTEXITCODE){
Write-Host "ERROR: in Az Group"
Throw "ERROR: in Az Group"
}
# Error in az group
# More az cli commands
}
catch {
Write-Host "ERROR: $Error"
}
К сожалению, это означает, что вы должны оценивать $LASTEXITCODE
каждый раз, когда вы выполняете Azure команду CLI.