TUTOS.EU

Lister les disques d'une VM et récupérer leur datastore

Dresser la liste des des disques des VM d'un ESXi donné

#Inscript dans un fichier le nom du datastore utilisé pour stocker une VM
#Attention : le script part du principe qu'une VM n'a pas ses disques répartis sur plusieurs DataStores.
#Ainsi, si il y a plusieurs disques, seul le nom du dernier Datastore sera retenu.
#Si le disque est de type RAW type, alors un résultat vide sera retourné

$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$currentScriptName = $MyInvocation.MyCommand.Name #Récupération du nom du script en cours

#On ne prend que le nom du script sans l'extention. Pour cela on chercher la position d'un point en partant de la droite et on prend tout ce qui est à sa gauche
$currentScriptName = $currentScriptName.substring(0,$($currentScriptName.lastindexofany(".")))

#Création du fichier vierge
$EmplacementFichier = "$varCheminRepertoireScript\$($currentScriptName)_Result.txt"
$MonFichier = New-Item -type file $EmplacementFichier -Force

$VIserver = "nomserveuravecvcenter.mon.domaine"
asnp vmware* #Import modules VMWares
$vc = Connect-VIServer -Server $VIserver -Force

$MesVms = Get-Vm | Where-Object {$_.VMHost -in ("nomesxi.mon.domaine")}
ForEach ($UneVM in $MesVms) {
	#$MaLigne = $UneVM.Name
	$MesDisques = $UneVM | Get-HardDisk
	ForEach ($UnDisque in $MesDisques) {
		$Storage = $UnDisque.Filename
        #Write-Host "Traitement de $($UneVM.Name) $Storage" #$($UnDisque.FileName)"		
        if (($Storage.Length -igt 0) -and ($Storage.substring(0,1) -eq "[")){
		    $Position = $Storage.indexof("]")
		    if ($Position -igt 0) {
		        $Storage = $Storage.substring(0,$Position)
		        $Storage = $Storage.substring(1)
		        Write-Host "$($UneVM.Name)/$Storage/$($UnDisque.FileName)"		
            }
        }
        else{
            Write-Host "$($UneVM.Name) : Le disque n'a pas le bon format : $Storage - $($UnDisque.DiskType)"
            $Storage = ""
        }
	}
    add-content $MonFichier "$($UneVM.Name);$Storage"
}

Disconnect-VIServer -Server * -Force -Confirm:$False
Lien vers le fichier : cliquez ici

Pages Web

Site WebDescription
Vmware.comGet-HardDisk
Communities.vmware.comGet List of VMs, Datastores and VMDK / path per Cluster