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