2012-05-03 84 views
0

我已經完成了在VMware中克隆大量虛擬機的任務。我不想通過克隆嚮導點擊數百次,而是儘可能自動化。使用多線程PowerCLI並行克隆多個虛擬機

我有模板機器已經配置和「密封」。一旦克隆並啓動,新克隆的實例將啓動,在syspreps時等待一段時間,等等。這大約需要20分鐘左右。

我發現一個非常好的script over on MSFT TechNet,它做我需要它做的一切。我對它進行了一些修改,所以我不必更改一個值併爲流程的每個步驟重新保存腳本。在整個腳本中我沒有使用$ Step計數器,而是用一些開始 - 延遲時間來替換它。此時,它工作正常併成功克隆它從CSV文件中讀取的所有機器。每臺機器在準備就緒之前需要大約35分鐘(機器移動到不同的AD OU)。

唯一的問題是,它在開始另一個克隆之前完成全部連續運行,等待整個過程(克隆,更改VLAN,啓動計算機並等待域加入,並將最終機器對象移動到不同的AD OU)完成。

我真的很想多線程來使整個操作更快。我在測試中發現,一旦關於五個獨立的克隆作業正在運行,vSphere中的克隆開始減慢,因此我想修改此腳本以一次運行四個克隆(整個工作流程)。

任何想法?如果需要,我可以粘貼代碼。

回答

2

您可以在一個模板中並行克隆8個vms。如果使用-RunAsync運行new-vm。使用-RunAsync該命令立即返回,輸出由一個或多個Task對象組成。

如果你想克隆多個虛擬機以下應該有所幫助。只是循環它。

Write-host "Deploying VM " -ForegroundColor Green -NoNewline; Write-Host $vmname -ForegroundColor Yellow 
get-OScustomizationspec $cs | get-OScustomizationNicMapping | set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $vm.IP -SubnetMask $vm.subnet -DefaultGateway $vm.gateway -Dns $vm.Dns1, $vm.Dns2 

$vms = New-VM -Name $vm.Name -Location $vm.cluster -VMhost $vm.vmhost -Template $vm.template -Datastore $vm.datastore -OSCustomizationSpec $cs -confirm:$false **-RunAsync** 

if ($vm1.error) { 
    Write-Host "Error in deploying $vmname" -ForegroundColor Red 
}