Il est possible parfois lorsque de la création d'une VM ou d'un Template d'oublier d'activer l'ajout à chaud de CPU ou de RAM.
L'objectif de ce script est d'en automatiser soit l'activation ou la désactivation sur une VM ciblée.
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 : Activation ou désactivation de l'ajout de CPU ou de RAM à chaud
. 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;
}
function hotadd{
do{
$hotCPU = Read-Host -Prompt " Activer ou desactiver l'ajout de CPU a chaud : [activer/desactiver] (respecter la casse) "
Write-Host;
if($hotCPU -eq "activer"){
Write-Host " Activation de l'ajout de CPU a chaud sur la VM " -NoNewline ; Write-Host $VMName -ForegroundColor green
Write-Host;
get-vm $VMname | set-vm -CpuHotAddEnabled:$true -Confirm:$false
}elseif($hotCPU -eq "desactiver") {
Write-Host " Desactivation de l'ajout de CPU a chaud sur la VM " -NoNewline ; Write-Host $VMName -ForegroundColor green
Write-Host;
get-vm $VMname | set-vm -CpuHotAddEnabled:$false -Confirm:$false
}
}while ( ($hotCPU -ne "activer") -and ($hotCPU -ne "desactiver"))
Write-Host;
do{
$hotRAM = Read-Host -Prompt " Activer ou desactiver l'ajout de RAM a chaud : [ACTIVER/DESACTIVER] (respecter la casse) "
Write-Host;
if($hotRAM -eq "ACTIVER"){
Write-Host " Activation de l'ajout de RAM a chaud sur la VM " -NoNewline ; Write-Host $VMName -ForegroundColor green
Write-Host;
get-vm $VMname | set-vm -MemoryHotAddEnabled:$true -Confirm:$false
}elseif($hotRAM -eq "DESACTIVER") {
Write-Host " Desactivation de l'ajout de RAM a chaud sur la VM " -NoNewline ; Write-Host $VMName -ForegroundColor green
Write-Host;
get-vm $VMname | set-vm -MemoryHotAddEnabled:$true -Confirm:$false
}
}while ( ($hotRAM -ne "ACTIVER") -and ($hotRAM -ne "DESACTIVER"))
}
# Debut du script
vcenter-connect
Write-Host -fore Cyan "
###################################################################
# Activation ou désactivation de l'ajout de CPU ou de RAM à chaud #
###################################################################"
Write-Host;
$VMname = Read-Host -Prompt " Entrer le nom d'une VM "
Write-Host;
$etatVM = get-vm $VMname | select powerstate
if($etatVM.PowerState -eq "PoweredON"){
Write-Host " /!\/!\ ATTENTION La VM est allumée, un arret puis un redemarrage complet de la VM est OBLIGATOIRE pour la prise en compte des modifications /!\/!\ " -ForegroundColor red
Write-Host;
do{
$hotstop = Read-Host -Prompt " arreter la VM maintenant ? [yes/no] "
Write-Host;
if($hotstop -eq "yes"){
Write-Host " Arret de la VM dans quelques secondes" -ForegroundColor yellow
1..3 | Sort-Object -Descending | %{Start-Sleep -Seconds 1;Write-Host " $_ " -ForegroundColor yellow}
Write-Host;
stop-VMGuest -VM $VMName -Confirm:$false | Out-Null
Write-Host " Arret en cours de la VM " -ForegroundColor yellow
Write-Host;
Start-Sleep -Seconds 30
hotadd
Write-Host;
Write-Host " En attente pour redemarrage automatique " -ForegroundColor yellow
start-VM -VM $VMName -Confirm:$false | Out-Null
}elseif($hotstop -eq "no") {
Write-Host " Pas d'arret effectue pour la VM. Les modifications ne seront pas prise en compte avant le prochain arret compleyt de la VM " -ForegroundColor red
Write-Host;
}
}while ( ($hotstop -ne "yes") -and ($hotstop -ne "no"))
}elseif($etatVM.PowerState -eq "PoweredOFF"){
hotadd
Write-Host;
}
Write-Host;
vcenter-disconnect