DestroySystem method of the Msvm_VirtualSystemManagementService class
Removes the previously defined virtual machine from the management scope of the host system. Any associated resource definitions will also be removed. The virtual machine must be in the powered off or saved state prior to calling this method.
Syntax
uint32 DestroySystem(
[in] CIM_ComputerSystem REF AffectedSystem,
[out] CIM_ConcreteJob REF Job
);
Parameters
-
AffectedSystem [in]
-
Type: CIM_ComputerSystem
A reference to an instance of the CIM_ComputerSystem that represents the virtual machine instance to be destroyed.
-
Job [out]
-
Type: CIM_ConcreteJob
If the operation is performed asynchronously, this method will return 4096, and this parameter will contain a reference to an object derived from CIM_ConcreteJob.
Return value
Type: uint32
If this method is executed synchronously, it returns 0 if it succeeds. If this method is executed asynchronously, it returns 4096 and the Job output parameter can be used to track the progress of the asynchronous operation. Any other return value indicates an error.
-
Completed with No Error (0)
-
Not Supported (1)
-
Failed (2)
-
Timeout (3)
-
Invalid Parameter (4)
-
Invalid State (5)
-
DMTF Reserved (..)
-
Method Parameters Checked - Job Started (4096)
-
Method Reserved (4097..32767)
-
Vendor Specific (32768..65535)
Remarks
Access to the Msvm_VirtualSystemManagementService class might be restricted by UAC Filtering. For more information, see User Account Control and WMI.
Examples
The following C# sample uses the DestroySystem method to remove a planned virtual machine. This code is taken from the Hyper-V planned virtual machines sample. The referenced utilities can be found in Common utilities for the virtualization samples (V2).
Important
To function correctly, the following code must be run on the virtual machine host server, and must be run with Administrator privileges.
/// <summary>
/// Finds the first Planned VM matching pvmName and removes it.
/// </summary>
/// <param name="pvmName">The name of the PVM to be removed.</param>
internal static void
RemovePvm(
string pvmName
)
{
ManagementScope scope = new ManagementScope(@"root\virtualization\v2");
using (ManagementObject pvm = WmiUtilities.GetPlannedVirtualMachine(pvmName, scope))
using (ManagementObject managementService = WmiUtilities.GetVirtualMachineManagementService(scope))
using (ManagementBaseObject inParams =
managementService.GetMethodParameters("DestroySystem"))
{
inParams["AffectedSystem"] = pvm.Path;
Console.WriteLine("Removing Planned Virtual Machine \"{0}\" ({1})...",
pvm["ElementName"], pvm["Name"]);
using (ManagementBaseObject outParams =
managementService.InvokeMethod("DestroySystem", inParams, null))
{
WmiUtilities.ValidateOutput(outParams, scope);
}
}
}
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows 8 [desktop apps only] |
Minimum supported server |
Windows Server 2012 [desktop apps only] |
Namespace |
Root\Virtualization\V2 |
MOF |
|
DLL |
|