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

问题描述:

我试图将一个资源组(包含一个虚拟机及其依赖资源,例如网络接口等)移动到新的订阅和资源组。 (如果通过图形用户界面做的举动正常工作)使用Powershell将Azure资源移动到另一个订阅

我的脚本:

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

及其与

布展AzureRmResource失败: { “错误”:{ “代码”:”诊断信息: 时间戳

“ResourceMoveProviderValidationFailed”,“message”:“Resource 移动验证失败。

等等

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

显然,我需要以某种方式指定相关资源,但似乎没有成为“依赖资源”为布展AzureRmResource模块的参数。

a。我如何确定依赖资源是什么?

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

此举资源请求不包含所有相关的资源

根据你的脚本,似乎你只是通过资源遍历和一个移动它们一个新的订阅其他资源组。但是据我们所知,一些资源可能有一些依赖资源,为了移动这种类型的资源(比如虚拟机等),我们应该确保我们也移动所有的依赖资源,否则移动操作将失败。

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

+0

感谢linksFred,脚本是这样的:Move-AzureRmResource -DestinationResourceGroupName $ destinationRG -ResourceId $ vm.ResourceId,$ storageAccount.ResourceId,$ diagStorageAccount.ResourceId,$ vNet.ResourceId,$ nic.ResourceId,$ ip。 ResourceId,$ nsg.ResourceId –

+0

如果您只是移动虚拟机,VNet,NIC等基础设施资源,那么在新预订中复制附加到VM的VHD到存储帐户并使用模板部署可能更容易。该模板将包含所有当前配置,并且可以使用现有VHD重新创建整个资源组。要将当前模板转到Azure门户中的资源组刀片,然后转到自动化脚本。 –

+0

感谢Tomasz,在这种情况下,使用上面提到的powershell move命令会更快。 –