use*_*453 5 powershell azure-cli
归结起来,我有一个如下所示的 Powershell 脚本:
$ErrorActionPreference='Stop'
az group deployment create -g ....
# Error in az group
# More az cli commands
Run Code Online (Sandbox Code Playgroud)
即使 az group deployment create 中出现错误,它也会在错误之外继续执行。如何阻止脚本在出错时执行?
通常,首先要尝试的是将所有内容包装在一个try...catch
块中。
try {
$ErrorActionPreference='Stop'
az group deployment create -g ....
# Error in az group
# More az cli commands
}
catch {
Write-Host "ERROR: $Error"
}
Run Code Online (Sandbox Code Playgroud)
啊啊啊,这不起作用。
这时您会挠头,意识到我们正在处理Azure CLI命令,而不是Azure PowerShell。它们不是本机 PowerShell 命令$ErrorActionPreference
,相反(听起来很糟糕),我们必须独立对待每个 Azure CLI 命令,就好像我们正在运行单独的程序一样(在后端,Azure CLI 基本上是运行的别名) python 命令。具有讽刺意味的是,大多数 Azure PowerShell 命令只是 Azure CLI 命令的 PowerShell 包装器;-))。
我们知道 Azure CLI 不会抛出终止错误,相反,我们必须将其视为程序,并查看返回代码(存储在变量中$LASTEXITCODE
)以查看它是否成功。一旦我们评估了这一点,我们就会发现throw
一个错误:
az group deployment create -g ....
if($LASTEXITCODE){
Write-Host "ERROR: in Az Group"
Throw "ERROR: in Az Group"
}
Run Code Online (Sandbox Code Playgroud)
然后可以将其实现到一个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"
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这意味着您必须$LASTEXITCODE
在每次执行Azure CLI 命令时进行评估。
归档时间: |
|
查看次数: |
2958 次 |
最近记录: |