2015-12-04 44 views
0

我正在使用.NET VMware程序集叫做VMware.Vim.dll來管理我的虛擬機。我面臨的問題是:當我克隆沒有網絡適配器的現有vm時,生成的虛擬機具有新的網絡適配器。克隆虛擬機沒有網絡適配器

這裏是代碼我使用:

var machineName = "testVmName"; 
var vmNameFilter = new NameValueCollection(); 
filter.Add("Name", machineName); 

var vm = (VirtualMachine)this._vimClient.FindEntityView(typeof(VirtualMachine), null, vmNameFilter, null); 

var dcNameFilter = new NameValueCollection(); 
dcNameFilter.Add("Name", _dataCenterName); 

var dataCenter = (Datacenter)this._vimClient.FindEntityView(typeof(Datacenter), null, dcNameFilter, null); 

var vmCloneSpec = new VirtualMachineCloneSpec 
{ 
    Location = new VirtualMachineRelocateSpec 
    { 
    }, 
    PowerOn = false, 
    Template = false 
}; 

vm.CloneVM(dataCenter.VmFolder, newVmName, vmCloneSpec) 

我怎麼能強迫API不創建新的網絡適配器?

+0

它看起來像你需要看看文檔..例如,快速谷歌出現了你可能想看看'vmCloneSpec'的'config'屬性請參閱:https://www.vmware。當您手動執行此任務時,com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/vim.vm.ConfigSpec.html – TheLethalCoder

+0

會發生同樣的情況嗎? –

+0

從API你也可以採取包含配置設置的虛擬機快照,所以你可能想看看 – TheLethalCoder

回答

0

免責聲明:我不是這方面的專家,但在我看來,這就是你想要做的。

從查看VirtualMachineCloneSpec的文檔,似乎有一個屬性config。這個屬性然後有一個叫netowrkShaper,而這又有一個叫enabled。我的猜測是試圖做類似如下:

vmCloneSpec.config.netowrkShaper.enabled = false; 

或更可能看到的,因爲它們是自定義對象:

vmCloneSpec.config = new VirtualMachineConfigSpec() 
{ 
    networkShaper = new VirtualMachineNetworkShaperInfo() 
    { 
     enabled = false; 
    } 
} 

據我可以從文檔告訴這可能是你正在尋找。

+0

不幸的是,它不能解決問題:(結果仍然是相同的。 – Sini4ka

+0

@ Sini4ka好的,你有沒有考慮拍攝快照? – TheLethalCoder

+0

不,我沒有。你是什麼意思?拍快照,然後克隆它? – Sini4ka