Get-AzSnapshot
表现出一些奇怪的行为。
Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
第一个问题:上面的命令给出了一个错误:
Resource group 'xxx' could not be found. ErrorCode: ResourceGroupNotFound ErrorMessage: Resource group
| 'xxx' could not be found. ErrorTarget: StatusCode: 404 ReasonPhrase: Not Found
,但是在该命令之前和之后有一个列出资源组的命令,它可以正确执行。
显然,问题在于它无法找到快照,而是归咎于RG。
第二期。仅执行Get-AzSnapshot
时,不会列出门户网站上列出的快照。这不是正确订阅中的问题,因为其他订阅中有诸如az group list
之类的其他命令。订阅的更多内容已强制加载az account set --subscription c56e18b5–xxx
答案 0 :(得分:0)
当资源组无效或未找到时,我只能使用Get-AzSnapshot
重现您的错误,这将返回ErrorCode: ResourceGroupNotFound
。如果您提供了正确的资源组,但是快照名称无效,则将获得ErrorCode: ResourceNotFound
。我会仔细检查您尝试访问的资源组是否确实存在。
如果您要确保如果资源组不存在,则不要运行Get-AzSnapshot
,如果发生以下情况,我将使用-ErrorVariable
添加一个错误变量来存储错误结果: Get-AzResourceGroup
。错误结果存储为System.Collections.ArrayList
类型,因此我们可以简单地检查找到的错误是否大于零。您可以运行$resourceGroupError.GetType().FullName
以获取完整的类型名称。如果找不到资源组,我们也可以使用-ErrorAction SilentlyContinue
来抑制Get-AzResourceGroup
的错误。
$resourceGroupName = "demo-RG"
$snapshotName = "demo-snapshot"
# First get resource group
Get-AzResourceGroup -Name $resourceGroupName -ErrorVariable resourceGroupError -ErrorAction SilentlyContinue
if ($resourceGroupError.Count -gt 0)
{
# ResourceGroup doesn't exist
# Don't get snapshot
Write-Host "Cannot find $resourceGroupName resource group"
}
else
{
# ResourceGroup exist
# Can get snapshot
Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
}
az group list
或Get-AzResourceGroup
,将仅列出当前活动订阅中的资源组。因此,如果快照在特定的订阅中,并且当前未设置为该订阅,则需要使用az account set --subscription
切换到该特定的订阅。对于Azure PowerShell,建议使用此method将上下文切换到活动订阅。