#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