There are many benefits to this – but one of the downsides is that it is no longer possible to easily edit a virtual machine configuration file that is not registered with Hyper-V. Fortunately – we provide all the APIs you need to do this without editing the file directly.
This code sample takes a virtual machine configuration file – that is not registered with Hyper-V. It then:
- Loads the virtual machine into memory – without actually importing it into Hyper-V
- Changes some settings on the virtual machine
- Exports this changed virtual machine to a new .VMCX file
Using this method you can make any changes you need to a .VMCX file without actually having to import the virtual machine. The key piece of information here is that when you perform a traditional import of a virtual machine you use ImportSystemDefinition to create a planned virtual machine (in memory copy) which you then realized to complete the import operation. But if you do not want to import the virtual machine – but just want to edit it – you can modify the planned virtual machine and pass it into ExportSystemDefinition to create a new configuration file.