Do either of these work for you. I have used both and found they get the OS that the tools report to vsphere.
Get-VM | Select Name,@{N='Guest OS';E={($_.GuestOS).trimstart("Microsoft ").trimend(" (64-bit)")}}
Get-VM | Select Name,@{N='Guest OS';E={$_.ExtensionData.Config.GuestFullName}}
And they they do work then you could tie that to a New-VIProperty like this:
New-VIProperty -ObjectType VirtualMachine -Name GuestOS -ValueFromExtensionProperty 'Config.GuestFullName' -Force | Out-Null
Then you only need to do:
Get-VM | Select Name,GuestOS