Método CreateSnapshot da classe Msvm_VirtualSystemSnapshotService
Cria um instantâneo de uma máquina virtual.
Sintaxe
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]
-
Uma referência a uma classe CIM_ComputerSystem que representa a máquina virtual da qual criar uma instantâneo.
-
SnapshotSettings [in]
-
Uma cadeia de caracteres que contém uma instância inserida de uma classe CIM_SettingData que contém as configurações de parâmetro para o instantâneo. Esse parâmetro é opcional e pode ser uma cadeia de caracteres vazia.
-
SnapshotType [in]
-
Especifica o tipo de instantâneo solicitado. Esse deve ser um dos valores a seguir.
-
Instantâneo completo (2)
-
Conclua instantâneo da máquina virtual.
-
Instantâneo de disco (3)
-
Instantâneo de discos de máquina virtual.
-
DMTF Reservado (..)
-
Específico do fornecedor (32768..65535)
ResultingSnapshot [in, out]
Uma referência a um objeto CIM_VirtualSystemSettingData que representa a máquina virtual resultante instantâneo.
Trabalho [out]
Se a operação for executada de forma assíncrona, esse método retornará 4096 e esse parâmetro conterá uma referência a um objeto derivado de CIM_ConcreteJob.
Valor retornado
Esse método retorna um dos valores a seguir.
-
Concluído sem erro (0)
-
Sem suporte (1)
-
Falha (2)
-
Tempo limite (3)
-
Parâmetro inválido (4)
-
Estado inválido (5)
-
Tipo inválido (6)
-
DMTF Reservado (..)
-
Parâmetros de método verificados – Trabalho iniciado (4096)
-
Método Reservado (4097..32767)
-
Específico do fornecedor (32768..65535)
Exemplos
O código de exemplo C# a seguir cria uma máquina virtual. Os utilitários referenciados podem ser encontrados em Utilitários comuns para os exemplos de virtualização (V2).
Importante
Para funcionar corretamente, o código a seguir deve ser executado no servidor host da máquina virtual e deve ser executado com privilégios 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 | Valor |
---|---|
Cliente mínimo com suporte |
Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2012 [somente aplicativos da área de trabalho] |
Namespace |
Root\Virtualization\V2 |
Cabeçalho |
|
MOF |
|
DLL |
|