Lorsque les serveurs de stockage iSCSI changent, il faut supprimer les anciennes cibles dans la configuration des ESXi. La suppression d’une cible iSCSI est une opération longue, et d’autant plus fastidieuse qu’il faut la répéter sur tous les hosts. Avec le risque de cliquer sur la mauvaise ligne et supprimer une cible en cours d’utilisation.
Le script ci-dessous vérifie la configuration de chaque ESXi, et la modifie si nécessaire.
Il indique pour chaque host si la cible est absente ou s’il doit la supprimer.
Attention : il s’agit ici de supprimer des cibles de stockage. Vérifiez soigneusement que vous avez bien saisi les bonnes IPs à supprimer.
Deux variables sont initialisées dans les 2 premières lignes.
– $EsxHosts : contient la liste des hosts ESXi à contrôler.
Elle est initialisée par une requête pour lister par exemple un host, les hosts d’un cluster, ou tous les hosts connus du vCenter.
$EsxHosts = Get-VMHost host01.infra.local $EsxHosts = Get-Cluster | Get-VMHost | Sort-Object -Property Name $EsxHosts = Get-VMHost | Sort-Object -Property Name
– $TargetIPs : contient la liste des adresses iSCSI à supprimer.
Elle peut contenir une ou plusieurs IPs à ajouter, encadrées individuellement par des guillemets et séparées par une virgule.
$TargetIPs = "10.20.30.10" $TargetIPs = "10.20.30.10", "10.20.30.11", "10.20.30.12"
$EsxHosts = Get-VMHost | Sort-Object -Property Name $TargetIPs = "10.20.30.10" Foreach ($EsxHost in $EsxHosts) { Write-Host $EsxHost.Name -ForegroundColor Red $VMHba = $EsxHost | Get-VMHostHba -Type iScsi | Where {$_.Model -eq "iSCSI Software Adapter"} Foreach ($TargetIP in $TargetIPs) { if (Get-IScsiHbaTarget -IScsiHba $VMHba -Type Send | Where {$_.Address -cmatch $TargetIP}) { Write-Host "- The target $TargetIP exists on $EsxHost. Removing..." -ForegroundColor Yellow Remove-IScsiHbaTarget -Target (Get-IScsiHbaTarget -IScsiHba $VMHba -Type Send | Where {$_.Address -cmatch $TargetIP}) -Confirm:$False } else { Write-Host "- The target $TargetIP does not exist on $EsxHost." -ForegroundColor Green } } }