在Azure powershell中显示自定义错误消息并退出
我正在尝试使用powershell获取特定订阅的存储名称列表。如果订阅名称正确,则会得到结果,但如果键入错误,则会出现以下错误: 选择订阅:请提供有效的租户或有效的订阅。 选择AzSubscription-SubscriptionName$subName CategoryInfo:CloseError:(:)[Set-AzContext],ArgumentException FullyQualifiedErrorId:Microsoft.Azure.Commands.Profile.SetAzureRMContextCommand 处理错误消息并以消息“找不到订阅”退出脚本的最佳选项是什么。 以下是powershell代码:在Azure powershell中显示自定义错误消息并退出,azure,powershell,azure-powershell,Azure,Powershell,Azure Powershell,我正在尝试使用powershell获取特定订阅的存储名称列表。如果订阅名称正确,则会得到结果,但如果键入错误,则会出现以下错误: 选择订阅:请提供有效的租户或有效的订阅。 选择AzSubscription-SubscriptionName$subName CategoryInfo:CloseError:(:)[Set-AzContext],ArgumentException FullyQualifiedErrorId:Microsoft.Azure.Commands.Profile.SetAzu
###Set a subscription name
$subName = "Test SubscriptionName"
Select-AzSubscription -SubscriptionName $subName
### Select storage accounts based for above subscription
$sAccount = Get-AzStorageAccount | select StorageAccountName
$sAccount
我用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
}
我用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
}
更好的解决方案应该是使用以下脚本:
$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
更好的解决方案应该是使用以下脚本:
$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
您只需执行空测试:
$sub = Select-AzSubscription -SubscriptionName $subName -ErrorAction SilentlyContinue
if ($sub -eq $null)
{
"Couldn't find the subscription"
## Add you exit code here!
}
else
{ "Good subname" }
您只需执行空测试:
$sub = Select-AzSubscription -SubscriptionName $subName -ErrorAction SilentlyContinue
if ($sub -eq $null)
{
"Couldn't find the subscription"
## Add you exit code here!
}
else
{ "Good subname" }
这不是一个好的解决办法。如果子名称正确,并且错误来自以下代码,如
Get-AzStorageAccount
,则您的代码仍会打印消息“找不到订阅”。@IvanYang现在呢?是否可以添加带有异常消息的自定义错误消息?例如:如果错误在子名称中,则“请重新输入您的子名称”+异常消息;如果错误在Get-AzStorageAccount中,则“您没有存储帐户”+异常消息?是的,您可以添加自定义错误消息。您还可以指定我的答案中提到的异常类型。@IvanYang,刚刚看到您的答案。非常感谢。这不是一个好的解决办法。如果子名称正确,并且错误来自以下代码,如Get-AzStorageAccount
,则您的代码仍会打印消息“找不到订阅”。@IvanYang现在呢?是否可以添加带有异常消息的自定义错误消息?例如:如果错误在子名称中,则“请重新输入您的子名称”+异常消息;如果错误在Get-AzStorageAccount中,则“您没有存储帐户”+异常消息?是的,您可以添加自定义错误消息。您还可以指定我的答案中提到的异常类型。@IvanYang,刚刚看到您的答案。非常感谢。谢谢,有道理!这样,我就可以看到错误在哪里了。谢谢,有道理!这样,我可以看到错误在哪里。