Voici un script qui vous permet de créer autant de VM que vous le souhaitez. Vous aurez besoin d’un Template et d’un modèle “Customization Specification Manager”.
#Deployer des VMs en masse grace a un template and Customization Specification Manager #Script By Olivier Gosselin - France #http://blog.purplescreen.fr #Tools PowerCLI 6.5 Release 1 $vCenterFQDN = "VotrevCenter.FQDN" $UservCenter = "Administrator" $PasswordvCenter ="Password" $GetDatastoreCluster = Get-DatastoreCluster $GetDatastore = Get-Datastore $GetVMHost = Get-VMHost | select -First 1 $ListTemplate = Get-Template $OSSpec = Get-OSCustomizationSpec Connect-VIServer $vCenterFQDN -User $UservCenter -Password $PasswordvCenter cls Write-Host "`r" Write-Host "Pré-requis : `r" Write-Host "=============`r" Write-Host "- Il vous faudra un template sur votre infrastructure VMWare`r" Write-Host "- Il vous faudra au minimum un modèle Customization Specification Manager`r" Write-Host "`r" #Ecrire le nom du préfix Write-Host "`r" do { $prefixNameVM = Read-Host "Ecrire le Préfixe que vous souhaitez pour vos VMs ? " } while (!$prefixNameVM) #Ecrire le nombre de VM Write-Host "`r" do { $NbVM= Read-Host "Nombre de VM souhaitez à partir de ce Template ? (Chiffre seulement) " } while ((!$NbVM) -or ($NbVM -lt '1') -or ($NbVM -match '\D+')) #Liste des Customization Specification Manager Write-Host "`r" $NbOSSpec = $OSSpec.count for ($i=0;$i -lt $NbOSSpec;$i++) { if ($NbOSSpec -eq 1) { #Dans le cas ou nous avons un choix possible Write-Host "Vous n'avez qu'un seul OS Spec : " $OSSpec.Name $OSSpecName = $OSSpec.Name } elseif ($NbOSSpec -gt 1) { #Dans le cas ou nous avons plusieurs choix possible Write-Host "`r Choisir votre Customization Specification Manager : `r" for ($i=0;$i -lt $NbOSSpec;$i++) { Write-Host "$i-" $OSSpec.Name[$i] "`r" } do { $MaxWrite = $NbOSSpec-1 $IDOSSpec = Read-Host "Choisir votre OS personaliser ?[0-$MaxWrite] " $OSSpecName = $OSSpec.Name[$IDOSSpec] } while (($IDOSSpec -ge $NbOSSpec) -or (!$IDOSSpec) -or ($NbVM -match '\D+')) } } #Liste des templates Write-Host "`r" $NbTemplate = $ListTemplate.count for ($i=0;$i -lt $NbTemplate;$i++) { if ($NbTemplate -eq 1) { #Dans le cas ou nous avons un choix possible Write-Host "Vous n'avez qu'un seul Template : " $ListTemplate.Name $TemplateName = $ListTemplate.Name } elseif ($NbTemplate -gt 1) { #Dans le cas ou nous avons plusieurs choix possible Write-Host "`r Liste des Templates : `r" for ($i=0;$i -lt $NbTemplate;$i++) { Write-Host "$i-" $ListTemplate.Name[$i] "`r" } do { $MaxWrite = $NbTemplate-1 $IDTemplate = Read-Host "Choisir votre Template ?[0-$MaxWrite] " $TemplateName = $ListTemplate.Name[$IDTemplate] } while (($IDTemplate -ge $NbTemplate) -or (!$IDTemplate) -or ($NbVM -match '\D+')) } } #Choisir le datastore Write-Host "`r" $NbDatastore = $GetDatastore.count for ($i=0;$i -lt $NbDatastore;$i++) { if ($NbDatastore -eq 1) { #Dans le cas ou nous avons un choix possible Write-Host "Vous n'avez qu'un seul Datastore : " $GetDatastore.Name $DatastoreName = $GetDatastore.Name } elseif ($NbDatastore -gt 1) { #Dans le cas ou nous avons plusieurs choix possible Write-Host "`r Liste des Datastores : `r" for ($i=0;$i -lt $NbDatastore;$i++) { Write-Host "$i-" $GetDatastore.Name[$i] "`r" } do { $MaxWrite = $NbDatastore-1 $IDDatastore = Read-Host "Choisir votre Datastore ?[0-$MaxWrite] " $DatastoreName = $GetDatastore.Name[$IDDatastore] } while (($IDDatastore -ge $NbDatastore) -or (!$NbDatastore) -or ($NbVM -match '\D+')) } } #Resumer Write-Host "`r" Write-Host "`rResumer : `r" Write-Host "=========`r" Write-Host "Nombre de VM(s) : "$NbVM "`r" Write-Host "Prefixe de vos VM(s) : "$prefixNameVM "`r" Write-Host "Customization Specification Manager : "$OSSpecName "`r" Write-Host "Template : "$TemplateName "`r" Write-Host "Datastore : "$DatastoreName "`r" Write-Host "`r" $Validate = Read-Host "Confirmer (y/n) ? " #Creation des VMs if ($Validate -eq "y") { for ($i=1;$i -le $NbVM;$i++) { New-VM -Name $prefixNameVM"_"$i -Template $TemplateName -Datastore $DatastoreName -ResourcePool $GetVMHost -OSCustomizationSpec $OSSpecName } } else { exit }