Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell将Azure资源移动到另一个订阅_Azure_Azure Powershell_Azure Resource Manager_Azure Resource Group - Fatal编程技术网

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

使用Powershell将Azure资源移动到另一个订阅,azure,azure-powershell,azure-resource-manager,azure-resource-group,Azure,Azure Powershell,Azure Resource Manager,Azure Resource Group,我正在尝试将资源组(包含VM及其从属资源,例如网络接口等)移动到新的订阅和资源组。(如果通过GUI进行移动,则移动效果良好) 我的剧本: foreach ($resource in $resources) {Move-AzureRmResource -DestinationResourceGroupName "newresourcegroup" -ResourceId $resource.resourceID -DestinationSubscriptionId 123456} 它的失败在于

我正在尝试将资源组(包含VM及其从属资源,例如网络接口等)移动到新的订阅和资源组。(如果通过GUI进行移动,则移动效果良好)

我的剧本:

foreach ($resource in $resources) {Move-AzureRmResource
-DestinationResourceGroupName "newresourcegroup" -ResourceId $resource.resourceID -DestinationSubscriptionId 123456}
它的失败在于

移动AzureRmResource: {“错误”:{“代码”:“ResourceMoveProviderValidationFailed”,“消息”:“Resource” 移动验证失败。请查看详细信息。诊断信息: 时间戳

等等

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

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

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

b、 如何在move cmdlet中指定它们

移动资源请求不包含所有从属资源

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


在移动服务之前,我们需要知道。此外,请参阅以了解如何移动需要依赖资源的资源。

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

  • 答:这是一个REST验证,可以在尝试移动之前执行该验证以识别依赖资源。
  • 然后可以使用“$IDs=get-AzureRMResource-ResourceGroupName$sourceRgName.ResourceGroupName | Select Object ResourceId”获取资源ID,然后使用“move-AzureRMResource-DestinationResourceGroupName$targetRg.ResourceGroupName
    
    -DestinationSubscriptionId$AzureTargetSubscription.SubscriptionId
    -ResourceId$Ids.ResourceId“

  • 感谢链接,脚本是这样的:Move AzureRmResource-DestinationResourceGroupName$destinationRG-ResourceId$vm.ResourceId$storageAccount.ResourceId$diagStorageAccount.ResourceId$vNet.ResourceId$nic.ResourceId$ip.ResourceId$nsg.ResourceId如果您只是在移动基础设施资源,如vm、vNet、nic等,那么它就可以运行了将附加到VM的VHD复制到新订阅中的存储帐户并使用模板部署会更容易。模板将已包含所有当前配置,使用现有VHD,您可以按原样重新创建整个资源组。若要获取当前模板,请转到Azure Portal中资源组的刀片,然后转到Automation scri感谢Tomasz,在这种情况下,只使用上面提到的powershell move命令要快得多。。