在 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 VMSS ---- PowerShell创建自定义镜像的VMSS集群
powershell Zip自定义DSC模块,用于上传到Azure Automation DSC
“创建管道时出错。”在 Azure 管道自托管代理中运行 powershell 脚本时