L'objectif de ce script est d'utiliser PowerCLI pour créer un Template de VM.
Pour cela le script posera quelques question afin de définir des variables telles que le nom de la VM à cloner, le nom du Template et le nom du dossier dans lequel sera stocké le Template.
Pour utiliser ce script il sera impératif de :
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
Le script à utiliser est le suivant :
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Creation d'un Template de VM
. UTILISATION :
- Lancer le script
#>
cls
# Declaration des fonctions
function vcenter-connect{
$VC = Read-Host -Prompt " Entrer le nom de vCenter "
$cred = Get-Credential
Write-Host;
Write-Host -ForegroundColor cyan "Connexion à vCenter. Merci de patienter..."
Connect-VIServer $VC -Credential $cred
Write-Host;
}
function vcenter-disconnect{
Write-Host;
Write-Host -ForegroundColor cyan "Déconnexion de vCenter..."
Disconnect-viserver -Server $Global:DefaultVIServer -Confirm:$false -Force
Write-Host;
}
# Debut du script
vcenter-connect
Write-Host -fore Cyan "
################################
# Creation d'un Template de VM #
################################"
Write-Host;
$VMTemplate = Read-Host -Prompt " Entrer le nom d'une VM "
Write-Host;
$VMTemplateName = Read-Host -Prompt " Entrer le nom du Template qui sera cree depuis la VM "
Write-Host;
$PowerState = get-vm $VMTemplate | select powerstate
if($PowerState.powerstate -eq "PoweredOff"){
Write-Host " Liste des dossiers disponibles " -ForegroundColor Yellow
Write-Host;
get-folder
Write-Host;
$Templatefolder = Read-Host -Prompt " Entrer le nom du dossier qui contiendra le Template "
Write-Host;
Write-Host " Le Template sera enregistre dans le dossier " -NoNewline; Write-Host $Templatefolder -ForegroundColor green
Write-Host;
Write-Host " Creation du Template en cours " -ForegroundColor yellow
Write-Host;
New-Template -Name $VMTemplateName -VM $VMTemplate -Location $Templatefolder -RunAsync
}elseif($PowerState.powerstate -eq "PoweredON"){
$herestring = @"
********** ATTENTION POUR CREER UN TEMPLATE LA VM DOIT ETRE ETEINTE **********
"@
$herestring
Write-Host;
$shutdown = Read-Host -Prompt " Continuer et eteindre une VM ? [oui/non] "
do{
if($shutdown -eq "non"){
Write-Host " ### Annulation, la VM ne sera pas eteinte ### " -ForegroundColor yellow
}elseif($shutdown -eq "oui"){
Write-Host " ### Arrêt de la VM ### " -ForegroundColor green
Write-Host;
Shutdown-VMGuest -VM $VMTemplate -Confirm:$false
sleep 30
Write-Host;
get-folder
$Templatefolder = Read-Host -Prompt " Entrer le nom du dossier qui contiendra le Template "
Write-Host;
Write-Host " Le Template sera enregistre dans le dossier " -NoNewline; Write-Host $Templatefolder -ForegroundColor green
Write-Host;
Write-Host " Creation du Template en cours " -ForegroundColor yellow
Write-Host;
New-Template -Name $VMTemplateName -VM $VMTemplate -Location $Templatefolder -RunAsync
}
}while ( ($shutdown -ne "oui") -and ($shutdown -ne "non"))
}
Write-Host;
vcenter-disconnect
Le résultat sera sous cette forme :
Le Template sera visible dans le dossier sélectionné :