Проблемы Get-AzSnapshot в PowerShell и Cloudhell

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

1 ответ

Первый выпуск

Я могу воспроизвести вашу ошибку только с помощью 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 я предлагаю переключить контексты в активную подписку с помощью этого метода.

Другие вопросы по тегам