Metodo CreateSnapshot della classe Msvm_VirtualSystemSnapshotService

Crea uno snapshot di una macchina virtuale.

Sintassi

uint32 CreateSnapshot(
  [in]      CIM_ComputerSystem           REF AffectedSystem,
  [in]      string                           SnapshotSettings,
  [in]      uint16                           SnapshotType,
  [in, out] CIM_VirtualSystemSettingData REF ResultingSnapshot,
  [out]     CIM_ConcreteJob              REF Job
);

Parametri

AffectedSystem [in]

Riferimento a una classe CIM_ComputerSystem che rappresenta la macchina virtuale per creare uno snapshot di .

SnapshotSettings [in]

Stringa che contiene un'istanza incorporata di una classe CIM_SettingData che contiene le impostazioni dei parametri per lo snapshot. Questo parametro è facoltativo e può essere una stringa vuota.

SnapshotType [in]

Specifica il tipo di snapshot richiesto. Questo deve essere uno dei valori seguenti.

Snapshot completo (2)

Snapshot completo della macchina virtuale.

Snapshot del disco (3)

Snapshot dei dischi delle macchine virtuali.

DMTF Riservato (..)

Fornitore specifico (32768..65535)

RisultanteSnapshot [in, out]

Riferimento a un oggetto CIM_VirtualSystemSettingData che rappresenta lo snapshot della macchina virtuale risultante.

Processo [out]

Se l'operazione viene eseguita in modo asincrono, questo metodo restituirà 4096 e questo parametro conterrà un riferimento a un oggetto derivato da CIM_ConcreteJob.

Valore restituito

Questo metodo restituisce uno dei valori seguenti.

Completato senza errore (0)

Non supportato (1)

Errore (2)

Timeout (3)

Parametro non valido (4)

Stato non valido (5)

Tipo non valido (6)

DMTF Riservato (..)

Parametri del metodo controllati - Processo avviato (4096)

Metodo riservato (4097..32767)

Fornitore specifico (32768..65535)

Esempio

Il codice di esempio C# seguente crea una macchina virtuale. Le utilità a cui si fa riferimento sono disponibili nelle utilità comuni per gli esempi di virtualizzazione (V2).

Importante

Per funzionare correttamente, il codice seguente deve essere eseguito nel server host della macchina virtuale e deve essere eseguito con privilegi di amministratore.

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();
}

Requisiti

Requisito Valore
Client minimo supportato
Windows 8 [solo app desktop]
Server minimo supportato
Windows Server 2012 [solo app desktop]
Spazio dei nomi
Root\Virtualization\V2
Intestazione
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Vedi anche

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)