$report = @() Get-VM | %{ $vmGuest = $_ | Get-VMGuest $row = "" | Select Customer, VMName, IPAddress, Host, OS, State, Memory, NoOfDisks, ProvisionedSpaceGB, UsedspaceGB, NoOfSnapshots, Datastore $row.Customer = $_.CustomFields["Customer"] $row.VMname = $_.Name $row.IPAddress = $vmGuest.IPAddress[0] $row.Host = $_.Host.Name $row.OS = $_.Guest.OSFullName $row.State = $_.PowerState $row.Memory = $_.MemoryMB $row.NoOfDisks = $_.HardDisks.Count $row.ProvisionedSpaceGB = "{0:N1}" -f (($_.HardDisks | %{$_.CapacityKB} | Measure-Object -Sum).Sum/1MB) $row.UsedspaceGB = "{0:N1}" -f ((Get-View -Id $_.Id | %{$_.LayoutEx.File | where {$_.Type -eq "diskExtent"}} | %{$_.Size} | Measure-Object -Sum).Sum/1GB) $row.NoOfSnapshots = (@($_ | Get-Snapshot)).Count $row.Datastore = [system.string]::Join(" ",@($_ | Get-Datastore | %{$_.Name})) $report += $row } $report | Export-Csv D:\VM1.csv