本文說明如何修正嘗試在 Hyper-V 伺服器上使用 Hyper-V 管理員或 System Center Virtual Machine Manager (SCVMM)導入已導出的虛擬機時發生的 0x80070057 錯誤。
原始 KB 編號: 968968
徵兆
當您嘗試匯入已使用 Hyper-V 管理員導出的虛擬機時,無法在不同的 Hyper-V 伺服器上使用 Hyper-V 管理員匯入虛擬機。 此外,您會收到類似下列的錯誤訊息:
嘗試匯入虛擬機時發生伺服器錯誤。 無法從匯入目錄目錄<路徑>匯入虛擬機。 錯誤:一或多個自變數無效(0x80070057)。
當您嘗試使用 System Center Virtual Machine Manager (SCVMM) 匯入使用 Hyper-V 管理員導出的虛擬機時,您會收到下列錯誤訊息:
錯誤 (12700)VMM 無法完成 Hyper-V 作業於伺服器 FQDN,因為發生錯誤:無法從匯入目錄<路徑>匯入虛擬機器。 錯誤:一或多個自變數無效(0x80070057)(未知的錯誤(0x8005))
因應措施
若要暫時解決此問題,請遵循下列步驟:
找出導出的虛擬機資料夾,然後開啟 .exp 檔案。
在 <VALUE> 和 </VALUE> 之間的行中,刪除 GUID。 以下範例顯示 .exp 檔案中的程式代碼範例,以及您應該移除的值:
<PROPERTY NAME="ScopeOfResidence" TYPE="string"> <VALUE> 222dea57-bedd-465c-8fe4-54f2ad7ae699 ** => DELETE THIS GUID** </VALUE> </PROPERTY>
儲存變更,然後關閉 [記事本]。
再次匯入修改過的虛擬機。
如果您想要自動解決此問題,您可以在將虛擬機匯入 Hyper-V 伺服器之前,先在 Hyper-V 伺服器上執行 Visual Basic 腳本:
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產品中的問題。