使用Powershell将Azure资源移动到另一个订阅

时间:2017-02-28 21:12:15

标签: azure azure-powershell azure-resource-manager azure-resource-group

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

我的剧本:

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

失败了

  

Move-AzureRmResource:   { “错误”:{ “代码”: “ResourceMoveProviderValidationFailed”, “消息”:“资源   移动验证失败。请看细节。诊断信息:   时间戳

等...

  

“移动资源请求不包含所有依赖项   资源。请检查缺少资源的错误详细信息   IDS \ “}],\” 代码\ “:\” MissingMoveDependentResources \ “\ ”消息\“:\” 的   移动资源请求不包含所有依赖资源。   请检查缺少资源的错误详细信息   IDS \ “}}”},{ “目标”:“Microsoft.Network/networkInterfaces","message":"{\"error\":{\"code\":\"MissingMoveDependentResources\",\"message \ “:\” 的   移动资源请求不包含所有依赖资源。   请查看缺少资源ID的详细信息

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

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

湾如何在移动cmdlet中指定它们?

2 个答案:

答案 0 :(得分:1)

  

移动资源请求不包含所有相关资源

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

在移动服务之前,我们需要知道what services that enable move and limitations。此外,请参阅Use Powershell to move a VM以了解如何移动需要相关资源的资源。

答案 1 :(得分: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 -DestinationSubscriptionId $AzureTargetSubscription.SubscriptionId移动         -ResourceId $ Ids.ResourceID“