2016-08-26 68 views
0

我的目標是以編程方式創建一個新的虛擬機,並將一個現有的vhdx文件附加到該機器。我的程序唯一的輸入是VM名稱和VHDX路徑。我正在使用Hyper-V WMI Provider和Virtualization V2命名空間來實現這一點。基本上,我將 this文章作爲腳本實施。正如this鏈接中提到的,我首先添加一個合成驅動器,然後嘗試附加vhdx文件。Hyper-V無法將現有的vhd文件附加到新創建的虛擬機上?

我能夠成功創建虛擬機並將合成驅動器添加到機器。但是,當我嘗試添加硬盤vhdx文件時,出現以下錯誤。 「新Virtaul機器」未能添加資源(虛擬機ID ...)。作業錯誤代碼爲32768,作業狀態爲10,僅與'失敗'相對應。

這是我用來連接vhdx文件的代碼。

//Add VHD 
    ManagementObject^ hardDisk = GetResourceAllocationsettingDataDefault(scope, 31, "Microsoft:Hyper-V:Virtual Hard Disk", "-"); 
    hardDisk = (ManagementObject^)hardDisk->Clone(); 
    array<String^>^ connection = gcnew array<String^>(1); 
    connection[0]="E:\\test.vhdx"; //Path to *.vhd file  

    hardDisk["Parent"] = synthetic->Path->Path; //WMI path-> This is the path of the synthetic drive that I added in the previous step. 
    hardDisk["HostResource"] = connection; 

    array<String^>^HDs = gcnew array<String^>(1); 
    HDs[0] = hardDisk->GetText(TextFormat::WmiDtd20); 

    ManagementBaseObject^ VHDinParams = vmtoCreate->GetMethodParameters("AddResourceSettings"); 
    VHDinParams["AffectedConfiguration"] = settings->Path->Path; 
    VHDinParams["ResourceSettings"] = HDs; 

    ManagementBaseObject^ VHDoutParams = vmtoCreate->InvokeMethod("AddResourceSettings", VHDinParams, nullptr); 

對於GetResourceAllocationsettingDataDefault方法,請參閱this鏈接。當我分析VHDoutParams變量的錯誤信息和錯誤代碼時,我只會看到下面的細節。 錯誤描述:'New Virtaul Machine'未能添加資源(虛擬機ID ...)。 錯誤代碼:32768(失敗) 工作狀態:10

我不知道我在想什麼。我以管理員身份在提升模式下運行程序。我沒有在Hyper-V主機上安裝防病毒軟件。我也通過互聯網徹底搜索,但找不到任何幫助。我錯過了什麼或做錯了什麼?

回答

0

vhdx文件僅適用於第2代虛擬機。請檢查可能是否也是錯誤未確定

相關問題