RealizePlannedSystem method of the Msvm_VirtualSystemManagementService class

Validates the configuration of a planned virtual machine and converts it to a realized virtual machine. Any runtime or saved state files associated with the virtual machine will be copied from the import directory to the virtual machine's data root, if applicable.


uint32 RealizePlannedSystem(
  [in]  Msvm_PlannedComputerSystem REF PlannedSystem,
  [out] CIM_ComputerSystem         REF ResultingSystem,
  [out] CIM_ConcreteJob            REF Job


PlannedSystem [in]

A reference to the Msvm_PlannedComputerSystem instance which is to be converted into a realized virtual machine.

ResultingSystem [out]

If the operation is completed synchronously, a reference to a CIM_ComputerSystem object that represents the resulting realized virtual machine.

Datatype updated from Msvm_ComputerSystem in Windows 10, version 1703.

Job [out]

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

This method returns one of the following values.

Completed with No Error (0)

Method Parameters Checked - Job Started (4096)

Failed (32768)

Access Denied (32769)

Not Supported (32770)

Status is unknown (32771)

Timeout (32772)

Invalid parameter (32773)

System is in use (32774)

Invalid state for this operation (32775)

Incorrect data type (32776)

System is not available (32777)

Out of memory (32778)


The following C# sample uses the RealizePlannedSystem method to realize 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).


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 realizes it.
/// </summary>
/// <param name="pvmName">The name of the PVM to be realized.</param>
/// <returns>The Realized Virtual Machine.</returns>
internal static ManagementObject
    string pvmName
    ManagementObject vm = null;
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2");

    using (ManagementObject pvm = WmiUtilities.GetPlannedVirtualMachine(pvmName, scope))
    using (ManagementObject managementService = WmiUtilities.GetVirtualMachineManagementService(scope))
    using (ManagementBaseObject inParams =
        inParams["PlannedSystem"] = pvm.Path;

        Console.WriteLine("Realizing Planned Virtual Machine \"{0}\" ({1})...",
                pvm["ElementName"], pvm["Name"]);

        using (ManagementBaseObject outParams =
            managementService.InvokeMethod("RealizePlannedSystem", inParams, null))
            if (WmiUtilities.ValidateOutput(outParams, scope, true, true))
                using (ManagementObject job =
                    new ManagementObject((string)outParams["Job"]))
                using (ManagementObjectCollection pvmCollection =
                        "Msvm_AffectedJobElement", null, null, null, null, false, null))
                    vm = WmiUtilities.GetFirstObjectFromCollection(pvmCollection);

    return vm;


Requirement Value
Minimum supported client
Windows 8 [desktop apps only]
Minimum supported server
Windows Server 2012 [desktop apps only]

See also