在 Azure PowerShell 中显示自定义错误消息并退出

Posted

技术标签:

【中文标题】在 Azure PowerShell 中显示自定义错误消息并退出【英文标题】:display custom error message in Azure powershell and exit 【发布时间】: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

【问题讨论】:

【参考方案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,刚刚看到你的回答。谢谢!

以上是关于在 Azure PowerShell 中显示自定义错误消息并退出的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure 自动化获取自定义模块详细信息

Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

powershell Zip自定义DSC模块,用于上传到Azure Automation DSC

“创建管道时出错。”在 Azure 管道自托管代理中运行 powershell 脚本时

powershell PowerShell的自定义提示,在切片栏中显示您当前的Az订阅

如何在 Azure B2C 租户中显示自定义的注册页面?