The ExtensionData property maps a dynamic read-only copy of the actual vSphere objects.
The "dynamic" in there means that the guys (and girls) who write the PowerCLI cmdlets, introduced intelligency that will only get the properties under ExtensionData when you actually access them.
This is a huge time-saver. Some of these vSphere objects are huge.
To come back to your questions:
- The ExtensionData property maps directly to the vSphere object. So for example
$vm = Get-VM -Name MyVM
$vm.ExtensionData
The last line will show an actual VirtualMachine object
- And no, you can change any of these directly. Use a PowerCLI cmdlet or a SDK method, and don't forget to do an UpdateViewData to get the new values.
I hope this clarified it somewhat (and didn't add to the confusion)