public static VMJob RequestStateChange(VM vm, int state) { ManagementScope scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions); ManagementObject vmObj = vm.Instance;//Utility.GetTargetComputer(vm.GUID, scope); ManagementBaseObject inParams = vmObj.GetMethodParameters("RequestStateChange"); inParams["RequestedState"] = state; ManagementBaseObject outParams = vmObj.InvokeMethod("RequestStateChange", inParams, null); UInt32 returnValue = (UInt32)outParams["ReturnValue"]; string jobPath = (string)outParams["Job"]; VMJob ThisJob = null; if (jobPath != null) { ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath(jobPath), null)); } inParams.Dispose(); outParams.Dispose(); vmObj.Dispose(); if ((jobPath == null) && (returnValue != ReturnCode.Completed) && (returnValue != ReturnCode.Started)) { throw new VMStateChangeException(returnValue); } //JobCompleted(outParams, scope, out ErrorCode); return(ThisJob); }
public static VMJob SetVMResource(VM vm, ManagementObject resource, Dictionary <string, object> Params) { ManagementScope scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions); ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService"); ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("ModifyVirtualSystemResources"); ManagementObject vmObj = vm.Instance; //ManagementObject resource = GetMemory(vm); //memSettings["Limit"] = quantity; //memSettings["Reservation"] = quantity; foreach (string key in Params.Keys) { resource[key] = Params[key]; } //resource["VirtualQuantity"] = quantity; string[] Resources = new string[1]; Resources[0] = resource.GetText(TextFormat.CimDtd20); //ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("ModifyVirtualSystemResources"); inParams["ComputerSystem"] = vmObj.Path.Path; inParams["ResourcesettingData"] = Resources; VMJob ThisJob = null; ManagementBaseObject outParams = virtualSystemService.InvokeMethod("ModifyVirtualSystemResources", inParams, null); //MessageBox.Show(outParams.GetText(TextFormat.Mof)); string jobPath = (string)outParams["Job"]; UInt32 returnValue = (UInt32)outParams["ReturnValue"]; if (jobPath != null) { ManagementObject jobObj = new ManagementObject(scope, new ManagementPath(jobPath), null); ThisJob = new VMJob(jobObj); } inParams.Dispose(); //resource.Dispose(); outParams.Dispose(); vmObj.Dispose(); virtualSystemService.Dispose(); if ((jobPath == null) && (returnValue != ReturnCode.Completed) && (returnValue != ReturnCode.Started)) { throw new VMResourcesUpdateException(returnValue); } return(ThisJob); }
public static VMJob RemoveVirtualSystemSnapshotTree(VM vm, VMSnapshot snapshot) { ManagementScope scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions); ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService"); ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("RemoveVirtualSystemSnapshotTree"); ManagementObject vmObj = Utility.GetTargetComputer(vm.GUID, scope); ManagementObject vmSnapshotObj = snapshot.SnapshotInstance; inParams["SnapshotSettingData"] = vmSnapshotObj.Path.Path; ManagementBaseObject outParams = virtualSystemService.InvokeMethod("RemoveVirtualSystemSnapshotTree", inParams, null); VMJob ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath((string)outParams["Job"]), null)); inParams.Dispose(); outParams.Dispose(); vmSnapshotObj.Dispose(); vmObj.Dispose(); virtualSystemService.Dispose(); return(ThisJob); }
public static VMJob CreateVirtualSystemSnapshot(VM vm) { ManagementScope scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions); ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService"); ManagementObject vmObj = Utility.GetTargetComputer(vm.GUID, scope); ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("CreateVirtualSystemSnapshot"); inParams["SourceSystem"] = vmObj.Path.Path; ManagementBaseObject outParams = virtualSystemService.InvokeMethod("CreateVirtualSystemSnapshot", inParams, null); //UInt32 returnValue = (UInt32)outParams["ReturnValue"]; VMJob ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath((string)outParams["Job"]), null)); inParams.Dispose(); outParams.Dispose(); vmObj.Dispose(); virtualSystemService.Dispose(); return(ThisJob); }