Método CreateSnapshot de la clase Msvm_VirtualSystemSnapshotService
Crea una instantánea de una máquina virtual.
Sintaxis
uint32 CreateSnapshot(
[in] CIM_ComputerSystem REF AffectedSystem,
[in] string SnapshotSettings,
[in] uint16 SnapshotType,
[in, out] CIM_VirtualSystemSettingData REF ResultingSnapshot,
[out] CIM_ConcreteJob REF Job
);
Parámetros
-
AffectedSystem [in]
-
Referencia a una clase CIM_ComputerSystem que representa la máquina virtual de la que se va a crear una instantánea.
-
SnapshotSettings [in]
-
Cadena que contiene una instancia insertada de una clase CIM_SettingData que contiene la configuración de parámetros de la instantánea. Este parámetro es opcional y puede ser una cadena vacía.
-
SnapshotType [in]
-
Especifica el tipo de instantánea solicitada. Debe ser uno de los siguientes valores.
-
Instantánea completa (2)
-
Complete la instantánea de la máquina virtual.
-
Instantánea de disco (3)
-
Instantánea de discos de máquina virtual.
-
DMTF Reserved (..)
-
Específico del proveedor (32768..65535)
ResultsSnapshot [in, out]
Referencia a un objeto CIM_VirtualSystemSettingData que representa la instantánea de máquina virtual resultante.
Trabajo [salida]
Si la operación se realiza de forma asincrónica, este método devolverá 4096 y este parámetro contendrá una referencia a un objeto derivado de CIM_ConcreteJob.
Valor devuelto
Este método devuelve uno de los valores siguientes.
-
Completado sin error (0)
-
No compatible (1)
-
Error (2)
-
Tiempo de espera (3)
-
Parámetro no válido (4)
-
Estado no válido (5)
-
Tipo no válido (6)
-
DMTF Reserved (..)
-
Parámetros de método comprobados: trabajo iniciado (4096)
-
Método reservado (4097..32767)
-
Específico del proveedor (32768..65535)
Ejemplos
El siguiente código de ejemplo de C# crea una máquina virtual. Las utilidades a las que se hace referencia se pueden encontrar en Utilidades comunes para los ejemplos de virtualización (V2).
Importante
Para funcionar correctamente, el código siguiente debe ejecutarse en el servidor host de la máquina virtual y debe ejecutarse con privilegios de administrador.
public static void CreateSnapshot(string vmName)
{
ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemSnapshotService");
ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("CreateSnapshot");
// Set the AffectedSystem property.
ManagementObject vm = Utility.GetTargetComputer(vmName, scope);
if (null == vm)
{
throw new ArgumentException(string.Format("The virtual machine \"{0}\" could not be found.", vmName));
}
inParams["AffectedSystem"] = vm.Path.Path;
// Set the SnapshotSettings property.
#if(true)
inParams["SnapshotSettings"] = "";
#else
ManagementObject snapshotSettings = Utility.GetServiceObject(scope, "CIM_SettingData");
inParams["SnapshotSettings"] = snapshotSettings.ToString();
#endif
// Set the SnapshotType property.
inParams["SnapshotType"] = 2; // Full snapshot.
ManagementBaseObject outParams = virtualSystemService.InvokeMethod("CreateSnapshot", inParams, null);
if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
{
if (Utility.JobCompleted(outParams, scope))
{
Console.WriteLine("Snapshot was created successfully.");
MiscClass.GetAffectedElement(outParams, scope);
}
else
{
Console.WriteLine("Failed to create snapshot VM");
}
}
else if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
{
Console.WriteLine("Snapshot was created successfully.");
}
else
{
Console.WriteLine("Create virtual system snapshot failed with error {0}", outParams["ReturnValue"]);
}
inParams.Dispose();
outParams.Dispose();
vm.Dispose();
virtualSystemService.Dispose();
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2012 [solo aplicaciones de escritorio] |
Espacio de nombres |
Root\Virtualization\V2 |
Encabezado |
|
MOF |
|
Archivo DLL |
|