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

Hyper-V、Esxi虚机还原,远程重启(关机)的更多相关文章

  1. ESXi6.5上的Ubuntu虚机在远程SSH时宕机

    情况是这样的, 有一个ESXi6.5上跑的Ubuntu虚机, 版本是18.04.1, 今天升级成18.04.2后, 就发现远程连接SSH不对劲, 在本地登录和操作都好好的, 只要远程SSH一连接, 服 ...

  2. virt-v2v命令将ESXI 虚机迁移到OpenStack中

    一简介: virt-v2v是将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上.它可以读取在VMware.Xen运行Hyper-V和其他虚拟机管理程序上的Windows和Linux的虚拟机,并将 ...

  3. esxi虚机迁移到Workstation

    虚拟机的文件管理由VMware Workstation来执行.一个虚拟机一般以一系列文件的形式储存在宿主机中,这些文件一般在由workstation为虚拟机所创建的那个目录中. 如下图所示:(< ...

  4. 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  5. 远程管理 KVM 虚机

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  6. Centos7系统kvm虚机忘记密码进不去, 通过宿主机修改/etc/shadow文件改密码,重启后系统起不来故障排错

    问题描述 某天, 因为其他项目组交接问题, kvm里面的堡垒机系统用户root密码登录不上,然后他通过宿主机修改/etc/shadow文件修改密码,但是修改完后重启系统后发现kvm宿主机连接不上虚机了 ...

  7. XShell远程连接本地虚机

    有很多朋友在自己电脑上部署完成了虚机,但是不知道怎么去用工具连接自己的虚机,下面给大家讲一下大概的步骤,不足之处敬请指正!! 1.打开我们的虚拟机平台,登录虚机 2.远程那肯定要知道虚机的IP地址,在 ...

  8. vSphere克隆虚机重启网卡报错

    使用VMware vSphere克隆虚机,修改IP重启网卡报错: 解决报错: 修改 /etc/udev/rules.d/70-persistent-net.rules 文件,克隆后会多出eth2和et ...

  9. openstack环境-解决windows虚机重启后比当前时间晚8小时问题

    背景: 生产环境下,发现windows虚机每次重启,时间都会倒退到虚机的格林威治时间(+8小时才是北京时间),也就是比当前时间晚8小时.测试发现,windows虚机所用的镜像,缺少了一个os_type ...

随机推荐

  1. Java HashSet工作原理及实现

    1. 概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). ...

  2. webapi帮助文档swagger

    nuget安装Swashbuckle包 修改SwaggerConfig文件 //c.IncludeXmlComments(GetXmlCommentsPath()); //设置接口描述xml路径地址 ...

  3. NPM慢怎么办 - nrm切换资源镜像

    1. 直接配置为taobao镜像 npm config set registry https://registry.npm.taobao.org 1. 使用NRM管理镜像 npm isntall -g ...

  4. 【C#】详解C#异常

    目录结构: contents structure [+] 异常处理机制 try块 catch块 finally块 自定义异常 CLS异常和非CLS异常 在这篇文章中,笔者会阐述C#中的异常.C#是一门 ...

  5. cocos2d-x中的坑

    1. 设置opacity=0, 子结点不受到影响. FadeOut 也不起作用. 查看代码可以找到一个 cascadeOpacityEnabled 的参数, 默认是关闭的. 打开就可以了. 2. Ta ...

  6. eoe移动开发者大会—移动开发者的极客盛宴 2013年9月14日期待您的加入!!

    2013 eoe移动开发者大会北京站即将盛大开启!      大会介绍 由国内最大的移动开发者社区eoe主办,在行业盟友的倾力支持下,集合了来自微软.Google.亚马逊.ARM等跨国公司业务负责人的 ...

  7. 引导修复软件boot-repair

    因为经常需要安装双系统win10+ubuntu,平时按照先win10,在ubuntu的顺序,是非常顺利的,grub非常智能也非常友好的帮助你双启动这2个系统. 但是,难免会有意外,比如,win10有了 ...

  8. 译: 1. RabbitMQ Spring AMQP 之 Hello World

    本文是译文,原文请访问:http://www.rabbitmq.com/tutorials/tutorial-one-spring-amqp.html RabbitMQ 是一个Brocker (消息队 ...

  9. sublime text 3 环境变量的配置、安装Package Control、汉化和注册

    1.在运行里输入sysdm.cpl打开环境变量设置界面,输入sublime的安装目录,分号和之前的隔开 2.下载好Package Control,解压重命名为package control 下载地址: ...

  10. 【emWin】例程十七:窗口对象——Button

    介绍: 按钮小工具通常用作触摸屏的主要用户界面元素,本例程介绍按钮小工具的创建及使用方法. 触摸校准(上电可选择是否进入校准界面) 自绘按钮(通过回调函数来自行绘制各种形状的按钮) 设置按钮字体 设置 ...