Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WMI在HyperV VM上应用最新快照时出现错误32775_C#_Wmi_Hyper V - Fatal编程技术网

C# 使用WMI在HyperV VM上应用最新快照时出现错误32775

C# 使用WMI在HyperV VM上应用最新快照时出现错误32775,c#,wmi,hyper-v,C#,Wmi,Hyper V,当我尝试使用WMI将虚拟机还原为最新快照时,我不断收到错误32775(此操作的状态无效)。我正在使用以下代码(顺便提一下,MSDN网站上提供): 我可以毫无问题地在UI上应用快照,并且我的虚拟机处于启用状态,不做任何事情。操作系统是Windows 2012。我还可以打印快照和虚拟机的名称,这样在识别机器和快照时就不会出现问题 有什么想法吗? 谢谢 Shahab发现了问题,显然,如果要远程应用快照,需要关闭VM!也许在MSDN网站上提到这一点太难了 ManagementObject virtual

当我尝试使用WMI将虚拟机还原为最新快照时,我不断收到错误32775(此操作的状态无效)。我正在使用以下代码(顺便提一下,MSDN网站上提供):

我可以毫无问题地在UI上应用快照,并且我的虚拟机处于启用状态,不做任何事情。操作系统是Windows 2012。我还可以打印快照和虚拟机的名称,这样在识别机器和快照时就不会出现问题

有什么想法吗? 谢谢
Shahab

发现了问题,显然,如果要远程应用快照,需要关闭VM!也许在MSDN网站上提到这一点太难了

ManagementObject virtualSystemService = Utility.GetServiceObject(connectionScope,"Msvm_VirtualSystemManagementService");
ManagementBaseObject inParams =virtualSystemService.GetMethodParameters("ApplyVirtualSystemSnapshot");
ManagementObject vmSnapshot = GetLastVirtualSystemSnapshot(vm);
if (vmSnapshot != null)
{
    inParams["SnapshotSettingData"] = vmSnapshot.Path.Path;
    inParams["ComputerSystem"] = vm.Path.Path;
    ManagementBaseObject outParams = virtualSystemService.InvokeMethod("ApplyVirtualSystemSnapshot", inParams, null);
    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, connectionScope))
        {
            Console.WriteLine("Snapshot was applied successfully.");

        }
        else
        {
            Console.WriteLine("Failed to apply snapshot.");
        }
    }
    else if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
    {
        Console.WriteLine("Snapshot was applied successfully.");
    }
    else
    {
        Console.WriteLine("Apply virtual system snapshot failed with error {0}", outParams["ReturnValue"]);
    }
}
else
{
    Console.WriteLine("No Snapshots!");
}