// TODO: Split into Add and Connect methods internal static void AddNetworAdapter(this ManagementScope scope, string vmIdentity, string switchName) { var virtualMachine = scope.GetVirtualMachine(vmIdentity); var virtualSystemSettingData = virtualMachine.GetVirtualSystemSettingData(); var defaultRessourcePoolForSyntheticEthernetPorts = scope.GetDefaultRessourcePoolForSyntheticEthernetPorts(); var allocationSettingData = defaultRessourcePoolForSyntheticEthernetPorts.GetAllocationSettingDataFromDefaultRessourcePool(); allocationSettingData["VirtualSystemIdentifiers"] = new[] { Guid.NewGuid().ToString("B") }; allocationSettingData["ElementName"] = "Network Adapter"; allocationSettingData["StaticMacAddress"] = false; allocationSettingData.Put(); var outParameters = scope.AddResourceSettings(virtualSystemSettingData, allocationSettingData); var resultingRessourceSettings = outParameters["ResultingResourceSettings"] as string[]; var syntheticEthernetPortSettingsData = new ManagementObject(resultingRessourceSettings[0]); // --------------- Connect Adapter and Switch var defaultRessourcePoolForEthernetConnection = scope.GetDefaultRessourcePoolForEthernetConnection(); var ethernetPortAllocationSettingData = defaultRessourcePoolForEthernetConnection.GetAllocationSettingDataFromDefaultRessourcePool(); var virtualSwitch = scope.GetVirtualSwitch(switchName); ethernetPortAllocationSettingData["Parent"] = syntheticEthernetPortSettingsData; ethernetPortAllocationSettingData["HostResource"] = new[] { virtualSwitch }; scope.AddResourceSettings(virtualSystemSettingData, ethernetPortAllocationSettingData); }
internal static void SetVhd(this ManagementScope scope, string vmIdentity, string vhdFilepath) { var virtualMachine = scope.GetVirtualMachine(vmIdentity); var virtualSystemSettingData = virtualMachine.GetVirtualSystemSettingData(); var diskDriveResource = scope.GetDiscDriveResource(virtualSystemSettingData); var allocationSettingData = scope.GetAllocationSettingDataForVirtualHardDisks(); allocationSettingData["Parent"] = diskDriveResource; allocationSettingData["HostResource"] = new string[] { vhdFilepath }; scope.AddResourceSettings(virtualSystemSettingData, allocationSettingData); }
internal static ManagementObject GetDiscDriveResource(this ManagementScope scope, ManagementObject virtualSystemSettingData) { var storageAllocationSettingData = scope.GetAllocationSettingDataForSyntheticDiskDrives(); var ideController = virtualSystemSettingData.GetIdeController(); storageAllocationSettingData["Parent"] = ideController; storageAllocationSettingData["AddressOnParent"] = 0; var outParameters = scope.AddResourceSettings(virtualSystemSettingData, storageAllocationSettingData); var resultingRessourceSettings = outParameters["ResultingResourceSettings"] as string[]; return(new ManagementObject(resultingRessourceSettings[0])); }