The VirtualMachine object that is returned by 'Get-View -ViewType VirtualMachine' doesn't have a PowerState property.
In PowerState2 you get the correct propert ($vm.Runtime.PowerState).
But shouldn't those 2 lines say $VMInfo instead of $VMHostInfo ?
$VMHostInfo.VM_Powerstate1 = $VM.powerstate
$VMHostInfo.VM_Powerstate2 = $VM.runtime.powerstate