次の方法で共有


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 オブジェクトへの参照。

ジョブ [出力]

操作が非同期的に実行される場合、このメソッドは 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
Header
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
[DLL]
Vmms.exe

こちらもご覧ください

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)