Voici le script que j’utilise en ce moment pour les mises en maintenance des hôtes AHV des clusters Nutanix avec un menu à choix multiples :
[powershell]
Disconnect-NTNXCluster *
#Choisir le cluster
$ClusterNut = Read-Host "Entrer the Ip or DNS name of your Nutanix Cluster to manage"
Connect-NTNXCluster $ClusterNut -AcceptInvalidSSLCerts -ForcedConnection
$Clusterlist = $null
for () {
# récupère la liste des noms d’hôtes du cluster
$Clusterlist = Get-NTNXHost
#défini integer à 0
$i=0
$ClusterName = (Get-NTNXCluster).name
Write-Host "Vous avez selectionné le cluster $($(Get-NTNXCluster).name)
"
# Créer un menu : Pour chaque hôte du cluster ajouter 1 à i et afficher le nom d’hôte associé
write-host "0 : Sortir du script"
foreach ($ht in $Clusterlist) {
$i++
Write-Host "$i : $($ht.Name) : état $($ht.hypervisorState) : Hyperviseur $($ht.hypervisorAddress) : IPMI $($ht.ipmiAddress) "
}
do {
$Menu = Read-Host "Choisir le numéro d’hôte"
#juste affichage : tant que le chiffre indiqué n’est pas un nombre d’un hôte possible on boucle ici
if (0..$Clusterlist.Count -notcontains $Menu) {Write-Host "Merci d’indiquer le numéro correspond au noeud à mettre en maintenance" -ForegroundColor Red}
}
#tant que le chiffre indiqué n’est pas un nombre d’un hôte possible on boucle ici
while (0..$Clusterlist.Count -notcontains $Menu)
#Conserve le nom de l’hôte dans la variable ChoiceMenu le -1 sert car le count debute à 0.
if ($menu -eq 0) {
#Déco
Disconnect-NTNXCluster *
exit
}
$ChoiceMenu = ($Clusterlist).name[$menu-1]
write-host "Vous avez choisi le $ChoiceMenu"
Write-Host -ForegroundColor Green "Choisir l’option 1 pour Mettre en Maintenance et l’option 2 pour remettre en ligne"
$Menu1 = Read-Host
if ($Menu1 -eq 1) {
$uuid = (Get-NTNXHost | where {$_.name -like $ChoiceMenu}).uuid
write-host "La tache de mise en maintenance de l’hôte $ChoiceMenu est en cours"
Start-NTNXMaintenanceMode -Hostid $uuid -EvacuationOption LIVE_MIGRATE
sleep 3
}
if ($Menu1 -eq 2) {
write-host "La tache remise en prod de l’hôte $ChoiceMenu est en cours"
Stop-NTNXMaintenanceMode -Hostid $uuid
sleep 3
}
}
[/powershell]