Метод CreateSnapshot класса Msvm_VirtualSystemSnapshotService
Создает snapshot виртуальной машины.
Синтаксис
uint32 CreateSnapshot(
[in] CIM_ComputerSystem REF AffectedSystem,
[in] string SnapshotSettings,
[in] uint16 SnapshotType,
[in, out] CIM_VirtualSystemSettingData REF ResultingSnapshot,
[out] CIM_ConcreteJob REF Job
);
Параметры
-
AffectedSystem [in]
-
Ссылка на класс CIM_ComputerSystem, представляющий виртуальную машину для создания snapshot.
-
SnapshotSettings [in]
-
Строка, содержащая внедренный экземпляр класса CIM_SettingData, содержащий параметры для snapshot. Этот параметр является необязательным и может быть пустой строкой.
-
SnapshotType [in]
-
Указывает тип запрошенного snapshot. Это должно быть одно из следующих значений.
-
Полный моментальный снимок (2)
-
Полное snapshot виртуальной машины.
-
Моментальный снимок диска (3)
-
Моментальный снимок дисков виртуальных машин.
-
DmTF Reserved (..)
-
Конкретный поставщик (32768..65535)
ResultingSnapshot [in, out]
Ссылка на объект CIM_VirtualSystemSettingData, представляющий результирующий snapshot виртуальной машины.
Задание [out]
Если операция выполняется асинхронно, этот метод возвращает значение 4096, а этот параметр будет содержать ссылку на объект, производный от CIM_ConcreteJob.
Возвращаемое значение
Этот метод возвращает одно из следующих значений.
-
Выполнено без ошибок (0)
-
Не поддерживается (1)
-
Сбой (2)
-
Время ожидания (3)
-
Недопустимый параметр (4)
-
Недопустимое состояние (5)
-
Недопустимый тип (6)
-
DmTF Reserved (..)
-
Проверенные параметры метода — задание запущено (4096)
-
Метод зарезервирован (4097..32767)
-
Конкретный поставщик (32768..65535)
Примеры
В следующем примере кода C# создается виртуальная машина. Ссылки на служебные программы можно найти в разделе Общие служебные программы для примеров виртуализации (версия 2).
Важно!
Для правильной работы следующий код должен выполняться на сервере узла виртуальной машины и выполняться с правами администратора.
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();
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 8 [только классические приложения] |
Минимальная версия сервера |
Windows Server 2012 [только классические приложения] |
Пространство имен |
Root\Virtualization\V2 |
Заголовок |
|
MOF |
|
DLL |
|