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
最佳答案
第一期
当资源组无效或未找到时,我只能使用 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 将上下文切换到您的事件订阅。 .
关于azure - powershell 和 cloudshell 上的 Get-AzSnapshot 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61466368/