共用方式為


Msvm_VirtualSystemSnapshotService 類別的 CreateSnapshot 方法

建立虛擬機器的快照集。

語法

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類別的參考,表示要建立快照集的虛擬機器。

SnapshotSettings [in]

字串,包含內嵌實例的 CIM_SettingData 類別,其中包含快照集的參數設定。 這個參數是選擇性的,而且可以是空字串。

SnapshotType [in]

指定要求的快照集類型。 這必須是下列其中一個值。

完整快照 集 (2)

虛擬機器的完整快照集。

磁片快照 集 (3)

虛擬機器磁片的快照集。

DMTF 保留 (。。)

廠商特定 (32768..65535)

ResultingSnapshot [in, out]

代表所產生虛擬機器快照 集之CIM_VirtualSystemSettingData 物件的參考。

作業 [out]

如果作業是以非同步方式執行,這個方法會傳回 4096,而此參數將包含衍生自 CIM_ConcreteJob之物件的參考。

傳回值

這個方法會傳回下列其中一個值。

已完成,沒有錯誤 (0)

不支援 (1)

失敗 (2)

時 (3)

不正確參數 (4)

不正確狀態 (5)

不正確類型 (6)

DMTF 保留 (。。)

已檢查方法參數 - 作業啟動 (4096)

保留 (4097..32767)

廠商特定 (32768..65535)

範例

下列 C# 範例程式碼會建立虛擬機器。 您可以在虛擬 範例的常見公用程式中找到參考的公用程式, (V2)

重要

若要正常運作,必須在虛擬機器主機伺服器上執行下列程式碼,而且必須使用系統管理員許可權來執行。

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
標頭
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

另請參閱

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)