Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 重命名vmware快照_C# 4.0_Vmware - Fatal编程技术网

C# 4.0 重命名vmware快照

C# 4.0 重命名vmware快照,c#-4.0,vmware,C# 4.0,Vmware,我有一个windows桌面应用程序,它可以命令或自动化VMware功能。我想重命名现有快照并使用以下流程进行更新,但我没有看到任何用于重命名现有快照的vmware API。是否有人可以向我提供有关如何重命名vmware快照的信息? 谢谢 单击“注册并启动快照”->启动来宾虚拟机 关机->将当前快照-SS1重命名为Temp-SS1->创建新快照 使用当前快照名称(即SS1)->删除以前重命名的快照 快照(即Temp-SS1) 可通过以下两种简单方法完成上述操作: public bool Creat

我有一个windows桌面应用程序,它可以命令或自动化VMware功能。我想重命名现有快照并使用以下流程进行更新,但我没有看到任何用于重命名现有快照的vmware API。是否有人可以向我提供有关如何重命名vmware快照的信息? 谢谢

单击“注册并启动快照”->启动来宾虚拟机 关机->将当前快照-SS1重命名为Temp-SS1->创建新快照 使用当前快照名称(即SS1)->删除以前重命名的快照 快照(即Temp-SS1)


可通过以下两种简单方法完成上述操作:

public bool CreateSnapShot(string vmName, string snapShotName, string snapShotDescription, bool replaceSnapShot, string currentSnapShotName)
    {
        try
        {
            NameValueCollection filter = new NameValueCollection();
            filter.Add(Constants.VM_FILTER_NAME, vmName);

            ManagedObjectReference snapShotMor = null;
            VirtualMachine vmObject = (VirtualMachine) vimClient.FindEntityViews(typeof(VirtualMachine), null, filter, null).FirstOrDefault();
            if (vmObject != null)
            {
                if (vmObject.Runtime.PowerState == VirtualMachinePowerState.poweredOn)
                    vmObject.ShutdownGuest();
                while (vmObject.Runtime.PowerState == VirtualMachinePowerState.poweredOn)
                {
                    Thread.Sleep(5000);
                    vmObject.UpdateViewData();//This will refresh VM object state
                }

                if (replaceSnapShot && currentSnapShotName!= "")
                {
                    if (RenameSnapshot(snapShotName, vmObject))
                        snapShotMor = vmObject.CreateSnapshot(snapShotName, snapShotDescription, false, false);
                }
                else snapShotMor = vmObject.CreateSnapshot(snapShotName, snapShotDescription, false, false);

                if (snapShotMor != null)
                    return true;
                else return false;
            }
            else return false;
        }
        catch (Exception ex)
        {
            return false;
        }           
    }
快照重命名可以通过以下方法完成:

public bool RenameSnapshot(string snapShotName, VirtualMachine vmObject)
    {
        try
        {                                                 
             ManagedObjectReference snapshotObject = vmObject.Snapshot.CurrentSnapshot;
             VirtualMachineSnapshot currentSnapshotName = new VirtualMachineSnapshot(vimClient, snapshotObject);
             currentSnapshotName.RenameSnapshot("Temp-" + snapShotName, "Renamed for deletion");

            return true;
        }

        catch (Exception ex)
        {
            return false;
        }
    }

完成以上两个步骤后,您可以删除重命名的(Temp)快照。

您可以发布一些相关代码吗?VirtualMachine vmObject=(VirtualMachine)vimClient.FindentialView(typeof(VirtualMachine),null,filter,null)。FirstOrDefault();如果(vmObject!=null){vmObject.shutdowngguest();“这里我想将我以前的快照(SS!重命名为'Temp SS1')”vmObject.CreateSnapshot(snapShotName,snapShotDescription,false,false);}