L'objectif de ce script est de permettre d'installer, de mettre à jour ou de supprimer les VMware Tools sur une VM spécifique dans un Cluster ESXi de vCenter.
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Installation upgrade ou suppression des VMware Tools
. 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 "
########################################################
# Installation upgrade ou suppression des VMware Tools #
########################################################"
Write-Host;
do{
$tools = Read-Host -Prompt " Faut-il installer, upgrade ou supprimer les VMWare tools : [add/up/sup] "
if(($tools -eq "add") -or ($tools -eq "up")){
Write-Host " ### Installation ou Upgrade des VMware Tools ### " -ForegroundColor yellow
Write-Host;
$ToolsUpgrade = Read-Host -Prompt " Entrer le nom d'une VM "
Write-Host;
$etatVMTools = get-vm $ToolsUpgrade | select powerstate
if($etatVMTools.PowerState -eq "PoweredON"){
get-vm -Name $ToolsUpgrade | Update-Tools -NoReboot -RunAsync
}else{
write-host "Attention la VM est eteinte. Elle doit être allumee pour effectuer la mise a jour des Tools." -ForegroundColor Yellow
Write-Host;
do{
$rep = Read-Host -Prompt " Faut-il allumer la VM et faire la Maj des Tools : [oui/non] "
if($rep -eq "oui"){
$start = Start-VM $ToolsUpgrade -Confirm:$false
sleep 30
if ($start = $?){
get-vm -Name $ToolsUpgrade | Update-Tools -NoReboot -RunAsync
}
}elseif($rep -eq "non"){
write-host "La VM ne sera pas allumee et les Tools ne sront pas mis a jour." -ForegroundColor red
}
}while(($rep -ne "oui") -and ($rep -ne "non"))
}
}elseif($tools -eq "sup"){
Write-Host " ### Suppression des VMware Tools ### " -ForegroundColor yellow
Write-Host;
$ToolsDelete = Read-Host -Prompt " Entrer le nom d'une VM "
Write-Host;
$etatVMTools = get-vm $ToolsDelete | select powerstate
if($etatVMTools.PowerState -eq "PoweredON"){
$app = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name LIKE '%VMware%'" -ComputerName "$ToolsDelete"
$app.Uninstall()
}else{
write-host "Attention la VM est eteinte. Elle doit être allumee pour effectuer la suppression des Tools." -ForegroundColor Yellow
Write-Host;
do{
$rep = Read-Host -Prompt " Faut-il allumer la VM et faire la suppression des Tools : [oui/non] "
if($rep -eq "oui"){
$start = Start-VM $ToolsDelete -Confirm:$false
sleep 30
if ($start = $?){
$app = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name LIKE '%VMware%'" -ComputerName "$ToolsDelete"
$app.Uninstall()
}
}elseif($rep -eq "non"){
write-host "La VM ne sera pas allumee et les Tools ne sront pas supprimes." -ForegroundColor red
}
}while(($rep -ne "oui") -and ($rep -ne "non"))
}
}
}while (($tools -ne "add") -and ($tools -ne "up") -and ($tools -ne "sup"))
Write-Host;
vcenter-disconnect