Dernière version de mon script powercli d’inventaire de VMs avec plusieurs optimisations récupérées sur le forum VMware principalement :
$vCenter = Read-Host "Entrer ici le nom ou l'ip du vCenter" Connect-VIServer $vCenter #Creation du dossier pour l'export md "C:\Scripts" -ErrorAction SilentlyContinue #Inventaire VMs Get-View -ViewType VirtualMachine -Property Name, Guest, Parent, Summary, Config, Runtime | select Name, @{N='VMHostname';E={$_.Guest.Hostname}}, #set variable parent puis remmonte d'un cran avec $parent.parent tant que le moref n'est pas datacenter @{N='Datacenter';E={ $parent = Get-View -Id $_.Parent -Property Name,Parent Do {$parent = Get-View -Id $parent.Parent -Property Name,Parent } while ($parent.MoRef.Type -ne "DataCenter" -and $parent), $parent.name}}, @{N='PowerState';E={$_.Summary.Runtime.PowerState}}, @{N='OS';E={$_.Config.GuestFullName}}, #Ancienne affichage IP #@{N='IP';E={$_.Guest.IPAddress}} #avantage de Net.IPAddress donne toutes les IPs | where -filtertype {$_ est inférieur à 'a') #affichage IPV4 seulement (en mode call de methode where) @{N='IP';E={$_.Guest.Net.IPAddress.where{$_ -notlike "*fe80*"}}}, @{N='MacAddress';E={$_.Guest.Net.MacAddress}}, @{N='NetworkName';E={$_.Guest.Net.Network}}, @{N='VMToolsStatus';E={$_.Guest.ToolsStatus}}, # use UpdateViewData() to populate the linked view, then access said linked view @{N='Cluster';E={$_.UpdateViewData("Runtime.host.parent.name"), $_.Runtime.LinkedView.Host.LinkedView.Parent.Name}}, @{N='vCPU';E={$_.Summary.Config.NumCpu}}, @{N='vRAM';E={$_.Summary.Config.MemorySizeMB}}, #le premier split prend la premiere expression, le deuxieme retire les crochets, le [1] selectionne la premiere valeur car c'est un tableau @{N='Datastore';E={$_.Summary.Config.VmPathName.Split()[0].split("[]")[1]}}, #formule mathematique [math]::round(valeur entre parentheses) puis division ou autre c'est bien de mettre 1GB il fait directement 1024 puis le chiffre après la virgule correspond au nombre de decimal @{N='DiskGB';E={[Math]::Round((($_.Guest.Disk | Measure-Object -Property Capacity -Sum).Sum / 1GB),0)}}, @{N='DiskFree';E={[Math]::Round((($_.Guest.Disk | Measure-Object -Property FreeSpace -Sum).Sum / 1GB),0)}} | Export-csv -NoTypeInformation -encoding "unicode" -append "C:\Scripts\export-VMs.csv"
Voici le résultat dans Excel: