Azure 获取powershell和cloudshell上的快照问题

Azure 获取powershell和cloudshell上的快照问题,azure,powershell,az,azure-vm,Azure,Powershell,Az,Azure Vm,Get-AzSnapshot显示出一些奇怪的行为 Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName 第一个问题:上面的命令给出了一个错误: Resource group 'xxx' could not be found. ErrorCode: ResourceGroupNotFound ErrorMessage: Resource group | 'xxx' could n

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 
但是有一个命令在这个命令之后和之前列出resourcegroup,并且它正确执行

显然,问题在于它找不到快照,但它却在责怪RG

第二期。仅执行
Get-AzSnapshot
时,不会列出门户上列出的快照。这不是正确订阅的问题,因为所有订阅中都有其他命令,如
az group list
list。订阅的更多内容强制加载了az帐户集--subscription c56e18b5–xxx

第一期 当资源组无效或未找到时,我只能使用
Get-AzSnapshot
重现您的错误,这将返回
ErrorCode:ResourceGroupNotFound
。如果您提供了正确的资源组,但快照名称无效,则会得到
ErrorCode:ResourceNotFound
。我会再次检查您试图访问的资源组是否确实存在

如果要确保在资源组不存在的情况下不运行
Get-AzSnapshot
,我将添加一个带有
-ErrorVariable
的错误变量,以存储发生异常时的错误结果。错误结果存储为type,因此我们可以简单地检查发现的错误是否大于零。您可以运行
$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,我建议使用此选项将上下文切换到活动订阅。

第一期 当资源组无效或未找到时,我只能使用
Get-AzSnapshot
重现您的错误,这将返回
ErrorCode:ResourceGroupNotFound
。如果您提供了正确的资源组,但快照名称无效,则会得到
ErrorCode:ResourceNotFound
。我会再次检查您试图访问的资源组是否确实存在

如果要确保在资源组不存在的情况下不运行
Get-AzSnapshot
,我将添加一个带有
-ErrorVariable
的错误变量,以存储发生异常时的错误结果。错误结果存储为type,因此我们可以简单地检查发现的错误是否大于零。您可以运行
$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,我建议使用此选项将上下文切换到活动订阅