Share via


Méthode CreateSnapshot de la classe Msvm_VirtualSystemSnapshotService

Crée un instantané d’une machine virtuelle.

Syntaxe

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

Paramètres

AffectedSystem [in]

Référence à une classe CIM_ComputerSystem qui représente la machine virtuelle à créer un instantané.

SnapshotSettings [in]

Chaîne qui contient une instance incorporée d’une classe CIM_SettingData qui contient les paramètres du instantané. Ce paramètre est facultatif et peut être une chaîne vide.

SnapshotType [in]

Spécifie le type de instantané demandé. Il doit s’agir de l’une des valeurs suivantes.

Capture instantanée complète (2)

Terminez instantané de la machine virtuelle.

Capture instantanée de disque (3)

Capture instantanée des disques de machine virtuelle.

DMTF Reserved (..)

Spécifique au fournisseur (32768..65535)

ResultingSnapshot [in, out]

Référence à un objet CIM_VirtualSystemSettingData qui représente la instantané de machine virtuelle résultante.

Travail [out]

Si l’opération est effectuée de manière asynchrone, cette méthode retourne 4096 et ce paramètre contient une référence à un objet dérivé de CIM_ConcreteJob.

Valeur retournée

Cette méthode retourne l’une des valeurs suivantes.

Terminé avec aucune erreur (0)

Non pris en charge (1)

Échec (2)

Délai d’expiration (3)

Paramètre non valide (4)

État non valide (5)

Type non valide (6)

DMTF Reserved (..)

Paramètres de méthode vérifiés - Travail démarré (4096)

Méthode réservée (4097..32767)

Spécifique au fournisseur (32768..65535)

Exemples

L’exemple de code C# suivant crée une machine virtuelle. Les utilitaires référencés se trouvent dans Utilitaires communs pour les exemples de virtualisation (V2).

Important

Pour fonctionner correctement, le code suivant doit être exécuté sur le serveur hôte de la machine virtuelle et doit être exécuté avec des privilèges d’administrateur.

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

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2012 [applications de bureau uniquement]
Espace de noms
Root\Virtualization\V2
En-tête
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Voir aussi

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)