1

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

4

1 回答 1

0

首要问题

我只能Get-AzSnapshot在资源组无效或找不到时重现您的错误,这将返回ErrorCode: ResourceGroupNotFound. 如果您提供了正确的资源组,但快照名称无效,您将获得ErrorCode: ResourceNotFound. 我会仔细检查您尝试访问的资源组是否确实存在。

如果要确保Get-AzSnapshot在资源组不存在时不运行,我会添加一个错误变量-ErrorVariable来存储错误结果,如果从Get-AzResourceGroup. 错误结果存储为 type 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
}

第二期

如果您运行或,则只会列出当前活动订阅下的资源组。因此,如果您的快照位于特定订阅中,并且您当前未设置为该订阅,则需要使用 切换到该特定订阅。对于 Azure PowerShell,我建议使用此方法将上下文切换到您的活动订阅。az group listGet-AzResourceGroupaz account set --subscription

于 2020-04-28T01:51:40.487 回答