Posted in PowerCLI Script VMware

Création de VMs en PowerCLI (Script)

Création de VMs en PowerCLI (Script) Posted on 16/12/2016Leave a comment

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
}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.