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