Voici une partie du script que j’utilise pour exporter mes informations d’hôtes à notre CMDB, l’intérêt principale de celui-ci est l’utilisation de « Get-View » et donc sa rapidité d’exécution.

$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 Hosts
Get-View -ViewType HostSystem -Property Name, Config.Product, Summary.Hardware.Model, Summary.Hardware.MemorySize, Summary.Hardware.CpuModel, Summary.Hardware.NumCpuPkgs, Summary.Hardware.NumCpuCores, Summary, Hardware, Parent |

select Name,

    @{N='Product';E={$_.Config.Product.FullName}},

    @{N='Build';E={$_.Config.Product.Build}},
	
	@{N='Model';E={$_.Summary.Hardware.Model}},
	
	@{N='Memory';E={[Math]::Round(($_.Summary.Hardware.MemorySize)/ 1GB, 0)}},
	
	@{N='CpuModel';E={$_.Summary.Hardware.CpuModel}},
	
	@{N='CpuSocket';E={$_.Summary.Hardware.NumCPuPkgs}},
	
	@{N='CpuCore';E={$_.Summary.Hardware.NumCpuCores}},
	
	@{Name="Serial"; Expression={($_.Hardware.SystemInfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "ServiceTag"}).IdentifierValue}},
	
	@{N='Cluster';E={
				
		$parent = Get-View -Id $_.Parent -Property Name,Parent
		While ($parent -isnot [VMware.Vim.ClusterComputeResource] -and $parent.Parent){
		$parent = Get-View -Id $parent.Parent -Property Name,Parent	}
		if($parent -is [VMware.Vim.ClusterComputeResource]){
		$parent.Name}}}, 
	   		
	@{N='DC';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)
	        echo $parent.name}}	|
			
	Export-csv -NoTypeInformation -encoding "unicode" -append "C:\Scripts\export-Hotes.csv"

Voici le résultat dans Excel :

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: