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 |
|
MOF |
|
DLL |
|