Ah, you are after the total size of just the VM's hard disks, not VMs' provisioned size on a datastore. Then, yes, you could continue to use the Get-HardDisk cmdlet as you had in your first example, but written as such to allow for further operations on the result:
Get-VM | Select-Object Name,@{n="HardDiskSizeGB"; e={(Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum}}
This route may be somewhat slow, especially as your environment is larger. If too slow, then we can employ everyone's bestest buddy, Get-View.
Anyway, does that do it for you?