无法使用 Hyper-V 上的 SCVMM Hyper-V SCVMM Virtual Machine Manager (导入) 虚拟机Hyper-V服务器

本文有助于修复在 Hyper-V 服务器上尝试导入已使用 Hyper-V Manager 或 System Center Virtual Machine Manager (SCVMM) 导出的虚拟机时发生的 0x80070057 错误。

适用于:   Windows Server 2012 R2
原始 KB 编号:   968968

症状

当您尝试导入已使用 Hyper-V Manager 导出的虚拟机时,您无法通过使用 Hyper-V Manager 将其导入到其他 Hyper-V 服务器上。 此外,您会收到类似于以下内容的错误消息:

尝试导入虚拟机时发生服务器错误。 无法从导入目录导入虚拟机 <Directory Path> 。 错误:一个或多个参数无效 (0x80070057) 。

当您尝试使用 System Center Virtual Machine Manager (SCVMM) 导入使用 Hyper-V Manager 导出的虚拟机时,您将收到以下错误消息:

错误 (12700) VMM 无法完成 Hyper-V 操作,因为错误: 未能从导入目录导入 <server FQDN> 虚拟机 <Directory Path> 。 错误:一个或多个参数无效, (0x80070057) (未知 (0x8005) )

解决方法

若要解决此问题,请按照以下步骤操作:

  1. 找到导出的虚拟机文件夹,然后打开 .exp 文件。

  2. 在 和 之间的行 <VALUE> </VALUE> 中,删除 GUID。 下面的示例展示了 .exp 文件的代码示例以及应删除的值:

    <PROPERTY NAME="ScopeOfResidence" TYPE="string">
        <VALUE>
          222dea57-bedd-465c-8fe4-54f2ad7ae699         ** => DELETE THIS GUID**
        </VALUE>
      </PROPERTY>
    
  3. 保存更改,然后退出记事本。

  4. 再次导入修改后的虚拟机。

如果要自动解决此问题,可以在 Visual Basic 服务器上运行 Hyper-V 脚本,然后再将虚拟机导入 Hyper-V 服务器:

Option Explicit

Dim WMIService
Dim VMList
Dim VM
Dim VMSystemGlobalSettingData
Dim VMManagementService
Dim Result

'Get instance of 'virtualization' WMI service on the local computer
Set WMIService = GetObject("winmgmts:\\.\root\virtualization")
  
'Get a VMManagementService object
Set VMManagementService = WMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemManagementService").ItemIndex(0)

'Get all the MSVM_ComputerSystem object
Set VMList = WMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem")

For Each VM In VMList
   if VM.Caption = "Virtual Machine" then
       Set VMSystemGlobalSettingData = (VM.Associators_("MSVM_ElementSettingData", "Msvm_VirtualSystemGlobalSettingData")).ItemIndex(0)
       VMSystemGlobalSettingData.ScopeOfResidence = ""  
       Result = VMManagementService.ModifyVirtualSystem(VM.Path_.Path, VMSystemGlobalSettingData.GetText_(1))
    end if
Next  

状态

Microsoft 已确认这是本文开头列出的 Microsoft 产品中的问题。