Its clear that many people are having a challenge of not having a great view of VMs and their location in the organization. This is all due to the unique requirement of VMs to exist inside vApps in vCloud director, this can be solved with a Get-CIVM command,which returns information about your VMs, but still it’s missing the storage assignment . Here is a straightforward script to report on the VM resources currently in use inside your vCloud organization:
$vms = get-civm
$objects = @()
foreach($vm in $vms)
{
$hardware = $vm.ExtensionData.GetVirtualHardwareSection()
$diskMB = (($hardware.Item | where {$.resourcetype.value -eq “17”}) | %{$.hostresource[0].anyattr[0].”#text”} | Measure-Object -Sum).sum
$row = New-Object PSObject -Property @{“vapp” = $vm.vapp; “name”=$vm.Name;”cpuCount”=$vm.CpuCount;”memoryGB”=$vm.MemoryGB;”storageGB”=($diskMB/1024)}
$objects += $row
}
# Use select object to get the column order right. Sort by vApp. Force table formatting and auto-width.
$objects | select-Object name,vapp,cpuCount,memoryGB,storageGB | Sort-Object -Property vapp | Format-Table –AutoSize
This can be exported to a CSV by using Export-CSV or just run the report.