azure - powershell 和 cloudshell 上的 Get-AzSnapshot 问题

标签 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 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 listGet-AzResourceGroup,则只会列出当前有效订阅下的资源组。因此,如果您的快照位于特定订阅中,并且您当前未设置为该订阅,则需要使用 az account set --subscription 切换到该特定订阅。对于 Azure PowerShell,我建议使用此 method 将上下文切换到您的事件订阅。 .

关于azure - powershell 和 cloudshell 上的 Get-AzSnapshot 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61466368/

相关文章:

php - 连接到Office365时访问被拒绝错误

wpf - Powershell 数据模板绑定(bind)语法

powershell - 无法在 Azure Runbook 上运行 Az 命令

azure - az cli 失败并显示 'appXXXdeploycr.azurecr.io' 无法识别为内部或外部命令、可操作程序或批处理文件

asp.net - Visual Studio - 将现有网站/webAPI 部署到 Azure

session - 需要使用 Azure 流量管理器和 session 状态存储进行负载平衡吗?

Azure KQL : convert date in string format "20210820122039" to datetime in azure KQL

javascript - 如何在node js中解析azure表的结果

loops - 从嵌套 for 循环继续 while

使用 Azure CLI 的 Bash 脚本