Identifier et compter les VM démarrées

Ce weekend, je doit arrêter et redémarrer dans un délais relativement court une soixantaine de machines virtuelles.
Le système sur lequel je vais intervenir contient également des VMs qui sont déjà arrêtées et qui ne devront pas être redémarrées.
Pour ne pas oublier une VM lors de l’arrêt ou du démarrage, j’ai créer deux scripts.

Le premier va me permettre d’avoir une image des VMs qui sont démarrées.

$vm = Get-VM | Where-Object { $_.PowerState -eq "PoweredOn" }
$file = ".\VM-StopAndStart.txt"
$resfile = New-Item -ItemType file -Path $file -Force
Add-Content -Path $resfile -Value $vm

J’aurai ainsi dans un fichier la liste des VMs sur lesquelles je dois intervenir. Je le lancerai juste avant le début de l’opération.

Pendant les opérations d’arrêt et de redémarrage, j’utiliserai ce second script.

cls
$inv = Get-Content -Path .\VM-StopAndStart.txt"
$vms = Get-VM
$on = 0
$off = 0
Foreach ($vm in $vms) {
if ($vm.PowerState -eq "PoweredOn" -and $inv -match $vm.name){
Write-Host "$vm is PoweredOn" -ForegroundColor Green
$on++
}
Elseif ($vm.PowerState -eq "PoweredOff" -and $inv -match $vm.name){
Write-Host "$vm must be PoweredOn" -ForegroundColor Red
$off++
}
Elseif ($vm.PowerState -eq "PoweredOff" -and $inv -notmatch $vm.name){
Write-Host "$vm must stay PoweredOff" -ForegroundColor Gray
}
}
Write-Host "`nPoweredOn: $on - PoweredOff: $off`n" -ForegroundColor Magenta

J’aurai donc ainsi rapidement la liste des machines que je dois arrêter ou redémarrer et leur nombre.

1 réflexion sur « Identifier et compter les VM démarrées »

  1. Sam

    Bonjour,

    Merci pour ton article qui est très interréssant.
    Pour un autre besoin je cherche à executer un script durant l’arrêt du serveur (ESXi 5.5).
    saurais-tu comment faire ?

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *