Script PowerCLI Inventaire VMs

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:

5 1 vote
Évaluation de l'article
S’abonner
Notifier de
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

0 Commentaires
Inline Feedbacks
View all comments