Hyper-V、Esxi虚机还原,远程重启(关机)
/// <summary> /// 还原虚拟机 /// </summary> /// <param name="RDPID"></param> /// <returns></returns> public ActionResult RevertVM(string RDPID, bool isNeedStateTOZero) { JsonResult jr = new JsonResult(); try { bool flag = false; RDPInfoFO fo = new RDPInfoFO(); RDPInfoDTO rdp = fo.GetRDPHostInfo(RDPID); if (string.IsNullOrEmpty(rdp.VMservice)) { flag = RevertESXI(RDPID); } else { flag = RevertHyper_V(RDPID); } if (flag) { //LogWriter.Info("还原快照成功" + info); if (isNeedStateTOZero) { fo.FreeRDP(RDPID); } else { fo.HasRDP(RDPID); } jr.Data = new { State = "success", Msg = "还原快照成功" }; } else { jr.Data = new { State = "error", Msg = "还原快照失败" }; //LogWriter.Info("还原快照失败" + info); } } catch (Exception ex) { //LogWriter.Info("还原快照出现异常" + info + " 异常信息:" + ex.Message); jr.Data = new { State = "error", Msg = ex.Message }; } return jr; } #region Hyper-V虚拟机还原 private bool RevertHyper_V(string RDPID) { RDPInfoFO fo = new RDPInfoFO(); RDPInfoDTO rdp = fo.GetRDPHostInfo(RDPID); object result = WSHelper.InvokeWebService(rdp.VMservice, "RollBack", new string[] { rdp.VMName, rdp.HostServerIP, rdp.HostUserName, rdp.HostPassword }); bool flag = (bool)result; return flag; } #endregion #region ESXI虚拟机还原 private bool RevertESXI(string RDPID) { RDPInfoFO fo = new RDPInfoFO(); RDPInfoDTO rdp = fo.GetRDPHostInfo(RDPID); string info = "HostServerIP:" + rdp.HostServerIP + " VMName:" + rdp.VMName + " username:" + rdp.HostUserName + " password:" + rdp.HostPassword; bool rel = VMSnapshot.RevertVm(rdp.HostServerIP, rdp.VMName, rdp.HostUserName, rdp.HostPassword); return rel; } #endregion #region Windwos7重启 /// <summary> /// /// </summary> /// <param name="strname">登陆名</param> /// <param name="strpwd">密码</param> /// <param name="ip">机器IP地址</param> /// <param name="doinfo">Reboot/Shutdown</param> private void CloseComputer(string strname, string strpwd, string ip, string doinfo) { ConnectionOptions op = new ConnectionOptions(); op.Username = strname;//''或者你的帐号(注意要有管理员的权限) op.Password = strpwd; //''你的密码 ManagementScope scope = new ManagementScope("\\\\" + ip + "\\root\\cimv2:Win32_Service", op); try { scope.Connect(); System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem"); ManagementObjectSearcher query1 = new ManagementObjectSearcher(scope, oq); //得到WMI控制 ManagementObjectCollection queryCollection1 = query1.Get(); foreach (ManagementObject mobj in queryCollection1) { string[] str = { "" }; mobj.InvokeMethod(doinfo, str); } //MessageBox.Show("操作成功"); } catch (Exception ey) { //MessageBox.Show(ey.Message); //this.button1.PerformClick(); } } #endregion
作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述