You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure跨区域迁移VM时PowerShell类型加载失败问题求助

Azure跨区域迁移VM的PowerShell脚本问题解决

问题详情

我在用PowerShell脚本把Azure VM从一个区域迁移到另一个区域,跟着官方文档操作时,创建$targetResourceSettingsObj对象卡壳了——系统提示找不到类型[Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api202101.VirtualMachineResourceSettings],要求验证对应程序集已加载。查下来是因为依赖Az.ResourceMover.private.dll,但我没找到正确添加这个依赖的方法。

已经试了两种办法都没用:

  • 执行Import-Module AzureAD -Force,系统说同名程序集已加载,但创建对象还是失败;
  • 用Add-type -path "Az.ResourceMover.private.dll"加载,同样无效。

操作步骤参考的是官方文档里「将资源添加到移动集合」的部分。

可行解决方案

1. 重装并导入正确的Az.ResourceMover模块

先清掉旧版本模块,安装最新版:

Uninstall-Module Az.ResourceMover -AllVersions -Force
Install-Module Az.ResourceMover -Force -AllowClobber
Import-Module Az.ResourceMover -Force

导入完用这条命令确认模块是否加载成功:

Get-Module Az.ResourceMover

2. 用模块内置命令创建目标资源设置对象

别手动去实例化私有类,直接用官方模块提供的命令创建对象:

$targetResourceSettingsObj = New-AzResourceMoverVirtualMachineResourceSetting -TargetResourceName "<你的目标VM名称>" -TargetRegion "<目标区域>"

如果需要指定虚拟机大小、可用性集等参数,可以这么写:

$targetResourceSettingsObj = New-AzResourceMoverVirtualMachineResourceSetting -TargetResourceName "myTargetVM" -TargetRegion "eastus" -TargetVmSize "Standard_D2s_v3"

3. 排查PowerShell环境与模块兼容性

  • 优先用PowerShell 7.x版本,避开Windows PowerShell 5.1的兼容性坑;
  • 执行Update-Module Az把所有Az模块更到最新,保证依赖兼容;
  • 用管理员身份运行PowerShell,避免权限问题导致模块加载失败。

4. 手动加载程序集的正确姿势

如果一定要手动加载,先找到Az.ResourceMover.private.dll的完整路径,一般在这个位置:

C:\Program Files\WindowsPowerShell\Modules\Az.ResourceMover\<你的模块版本号>\Az.ResourceMover.private.dll

替换掉版本号后执行:

Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\Az.ResourceMover\3.1.0\Az.ResourceMover.private.dll"

内容的提问来源于stack exchange,提问作者Talang_madave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:22:35