【问题标题】:display custom error message in Azure powershell and exit在 Azure PowerShell 中显示自定义错误消息并退出
【发布时间】:2021-03-21 09:38:47
【问题描述】:

我正在尝试使用 powershell 获取特定订阅的存储名称列表。如果我有正确的订阅名称,我会得到结果,但如果输入有误,则会收到以下错误:

Select-AzSubscription :请提供有效的租户或有效的订阅。 选择-AzSubscription -SubscriptionName $subName CategoryInfo : CloseError: (:) [Set-AzContext], ArgumentException FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.SetAzureRMContextCommand

处理错误消息并从脚本中退出并显示“找不到订阅”消息的最佳选择是什么。 这是powershell代码:

###Set a subscription name
$subName = "Test SubscriptionName"

Select-AzSubscription -SubscriptionName $subName

### Select storage accounts based for above subscription
$sAccount = Get-AzStorageAccount | select StorageAccountName
$sAccount

【问题讨论】:

    标签: azure powershell azure-powershell


    【解决方案1】:

    更好的解决方案应该是使用以下脚本:

    $subName = "Test SubscriptionName"
    
    try{ 
         Select-AzSubscription -SubscriptionName $subName -ErrorAction Stop        
        } 
    catch [System.ArgumentException]{
            Write-Host "Couldn't find the subscription"
    
            #use exit to exit the script
            exit
         }
    
    #Select storage accounts based for above subscription      
    $sAccount = Get-AzStorageAccount | select StorageAccountName
    $sAccount
    

    【讨论】:

    • 谢谢,有道理!这样,我就可以看到错误在哪里。
    【解决方案2】:

    你可以做一个空测试:

    $sub = Select-AzSubscription -SubscriptionName $subName -ErrorAction SilentlyContinue
    if ($sub -eq $null) 
      { 
        "Couldn't find the subscription"
        ## Add you exit code here!
      }  
    else
      { "Good subname" }
    

    【讨论】:

      【解决方案3】:

      我能够使用 try-catch 方法解决它。这是解决方案:

       $subName = "Test SubscriptionName"
      
      Try { 
           Select-AzSubscription -SubscriptionName $subName -ErrorAction Stop
              #Select storage accounts based for above subscription
               $sAccount = Get-AzStorageAccount | select StorageAccountName
                $sAccount
               } 
      Catch{
              Write-Host  $_.Exception.Message
           }
      

      【讨论】:

      • 这不是一个好的解决方案。如果子名称正确,并且错误来自以下代码,例如Get-AzStorageAccount,您的代码仍会打印消息“找不到订阅”。
      • @IvanYang 现在怎么样?是否可以使用异常消息添加自定义错误消息?例如:如果错误出现在 subName 中,则“请重新输入您的 subName”+异常消息,如果出现在 Get-AzStorageAccount 中,则“您没有存储帐户”+异常?
      • 是的,您可以添加自定义错误消息。您还可以指定我的回答中提到的异常类型。
      • @IvanYang,刚刚看到你的回答。谢谢!
      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 2014-08-27
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多