/// <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

最新文章

  1. 获取spring容器要小心的坑
  2. Android Programming: Pushing the Limits -- Chapter 4: Android User Experience and Interface Design
  3. C++ 之 const 随笔记
  4. NODE-WEBKIT教程(12)全屏
  5. Saltstack系列2:Saltstack远程执行命令
  6. QGraphicsEffect介绍(十分漂亮)
  7. 谈谈项目中遇到的各种iOS7适配问题
  8. PC-改变电脑的CPU,内存,硬盘大小!
  9. 重构第四天 : 用多态替换条件语句(if else &amp; switch)
  10. Win7系统安装MySQL
  11. Practice: Process logs with Apache Hadoop
  12. Nvidia CUDA 6 Installed In Ubuntu 12.04
  13. jQuery基本过滤选择器
  14. 可重复执行的SQL Script
  15. 访问不了firefox附加组件页面怎么办
  16. 使用EasyNetQ组件操作RabbitMQ消息队列服务
  17. 【iCore4 双核心板_ARM】例程四:USART实验——通过命令控制LED
  18. jquery 点击元素以外任意地方隐藏该元素的方法
  19. Redis Cluster 添加/删除 完整折腾步骤
  20. odoo之自动生成编号问题

热门文章

  1. Asp.net 子域共享cookie
  2. AWK常用技巧
  3. 【ZH奶酪】如何用Python实现编辑距离?
  4. 访问 Google
  5. 关于 TVM
  6. Python实现邮件的批量发送
  7. Retrofit 2.0 使用详细教程
  8. 借着Python-3来聊聊utf-8字符集
  9. 一个vue请求接口渲染页面的例子
  10. MySQL在线删除多余的binlog文件