0

我正在尝试将一个资源组(包含一个 VM 及其依赖资源,例如网络接口等)移动到一个新的订阅和资源组。(如果通过 GUI 完成,移动工作正常)

我的脚本:

foreach ($resource in $resources) {Move-AzureRmResource
-DestinationResourceGroupName "newresourcegroup" -ResourceId $resource.resourceID -DestinationSubscriptionId 123456}

它失败了

Move-AzureRmResource : {"error":{"code":"ResourceMoveProviderValidationFailed","message":"资源移动验证失败。请查看详细信息。诊断信息:时间戳

ETC...

"移动资源请求不包含所有依赖资源。请检查缺少资源 ID 的错误详细信息。\"}],\"code\":\"MissingMoveDependentResources\",\"message\":\"移动资源请求不包含所有相关资源。请检查缺少资源 ID 的错误详细信息。\"}}"},{"target":"Microsoft.Network/networkInterfaces","message":"{\"error\": {\"code\":\"MissingMoveDependentResources\",\"message\":\"移动资源请求不包含所有依赖资源。请检查缺少资源ID的详细信息

显然,我需要以某种方式指定依赖资源,但 Move-AzureRmResource 模块似乎没有“依赖资源”的参数。

一个。如何确定依赖资源是什么?

湾。如何在 move cmdlet 中指定它们?

4

2 回答 2

1

移动资源请求不包含所有依赖资源

根据您的脚本,您似乎只是遍历资源并将它们一一移动到新订阅中的另一个资源组。但是我们知道,有些资源可能有一些依赖资源,要移动这种类型的资源(如虚拟机等),我们应该确保我们也移动了所有依赖资源,否则移动操作会失败。

在移动服务之前,我们需要知道哪些服务可以启用移动和限制。此外,请参阅使用 Powershell 移动 VM以了解如何移动需要依赖资源的资源。

于 2017-03-01T02:36:00.710 回答
0

我要补充一点,移动到新订阅需要同时移动依赖资源。这需要首先在同一 RG 中组织资源(无论如何此时),然后才能成功移动操作。如果您只是在 RG 之间移动资源,那么您可以在不重新组织 RG 的情况下进行移动。请记住,您可能拥有可能失败的隐藏对象 VM 扩展,以及需要在迁移前后解决的问题,例如 Azure 备份。

  1. 回答:这是一个 REST 验证,可以在尝试移动之前执行以识别依赖资源。 https://docs.microsoft.com/en-us/rest/api/resources/resources/validatemoveresources
  2. 然后,您可以使用以下方法获取资源 ID:“$Ids = Get-AzureRMResource -ResourceGroupName $sourceRgName.ResourceGroupName | Select-Object ResourceId”,然后使用“Move-AzureRmResource -DestinationResourceGroupName $targetRg.ResourceGroupName -ResourceId -DestinationSubscriptionId $AzureTargetSubscription.SubscriptionId $Ids.ResourceID”移动
于 2019-01-04T16:55:19.270 回答