Powershell 如何在 Try Catch 块中处理 Az Cli

问题描述 投票:0回答:1

我有以下代码...

当找不到资源时,会引发错误,但代码继续运行...不知道为什么?

 try{
              
              $state=$(az synapse sql pool show --name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME --query "status")

              Write-Host("State = $state")

              if($state -match "Paused")
              {
                Write-Host("Resume Pool xxx")
                
                az synapse sql pool resume --name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME

                az synapse sql pool wait --sql-pool-name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME --custom "state==Online"
              };
          
            
            }
            catch
            {
              Write-Host("Handle error - no need to do anything....")
            }
powershell azure-powershell azure-cli
1个回答
0
投票

A

try-catch
块仅捕获终止错误。非终止错误(如本例中
az
命令引发的错误)不会被捕获,也不会停止脚本的执行。使用
$ErrorActionPreference
变量并在脚本开头设置为
$ErrorActionPreference = "Stop"

$ErrorActionPreference = "Stop"

try {
    $state=$(az synapse sql pool show --name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME --query "status")

    Write-Host("State = $state")

    if($state -match "Paused") {
        Write-Host("Resume Pool xxx")
        az synapse sql pool resume --name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME
        az synapse sql pool wait --sql-pool-name $DB_NAME --resource-group $RG_NAME --workspace-name $WKSPC_NAME --custom "state==Online"
    }
}
catch {
    Write-Host("Handle error - no need to do anything....")
}
© www.soinside.com 2019 - 2024. All rights reserved.