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
Hyper-V、Esxi虚机还原,远程重启(关机)的更多相关文章
- ESXi6.5上的Ubuntu虚机在远程SSH时宕机
情况是这样的, 有一个ESXi6.5上跑的Ubuntu虚机, 版本是18.04.1, 今天升级成18.04.2后, 就发现远程连接SSH不对劲, 在本地登录和操作都好好的, 只要远程SSH一连接, 服 ...
- virt-v2v命令将ESXI 虚机迁移到OpenStack中
一简介: virt-v2v是将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上.它可以读取在VMware.Xen运行Hyper-V和其他虚拟机管理程序上的Windows和Linux的虚拟机,并将 ...
- esxi虚机迁移到Workstation
虚拟机的文件管理由VMware Workstation来执行.一个虚拟机一般以一系列文件的形式储存在宿主机中,这些文件一般在由workstation为虚拟机所创建的那个目录中. 如下图所示:(< ...
- 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)
上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...
- 远程管理 KVM 虚机
上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...
- Centos7系统kvm虚机忘记密码进不去, 通过宿主机修改/etc/shadow文件改密码,重启后系统起不来故障排错
问题描述 某天, 因为其他项目组交接问题, kvm里面的堡垒机系统用户root密码登录不上,然后他通过宿主机修改/etc/shadow文件修改密码,但是修改完后重启系统后发现kvm宿主机连接不上虚机了 ...
- XShell远程连接本地虚机
有很多朋友在自己电脑上部署完成了虚机,但是不知道怎么去用工具连接自己的虚机,下面给大家讲一下大概的步骤,不足之处敬请指正!! 1.打开我们的虚拟机平台,登录虚机 2.远程那肯定要知道虚机的IP地址,在 ...
- vSphere克隆虚机重启网卡报错
使用VMware vSphere克隆虚机,修改IP重启网卡报错: 解决报错: 修改 /etc/udev/rules.d/70-persistent-net.rules 文件,克隆后会多出eth2和et ...
- openstack环境-解决windows虚机重启后比当前时间晚8小时问题
背景: 生产环境下,发现windows虚机每次重启,时间都会倒退到虚机的格林威治时间(+8小时才是北京时间),也就是比当前时间晚8小时.测试发现,windows虚机所用的镜像,缺少了一个os_type ...
随机推荐
- 线程安全的CopyOnWriteArrayList介绍
证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的. ReadThread.java import java.util. ...
- OUI启动时的小错误PRVF-0002
[oracle@bys3 database]$ Starting Oracle Universal Installer... Checking Temp space: must be greater ...
- Online
上线前的准备: 1.是在本地测试的时候,以为页面上没有php的warning代码就是正确的,没有查看apache的error_log中相关的记录,然后就直接上线了.
- CAS Maven
https://wiki.jasig.org/display/CASUM/Best+Practice+-+Setting+Up+CAS+Locally+using+the+Maven2+WAR+Ove ...
- MVC项目实践,在三层架构下实现SportsStore-11,使用Knockout实现增删改查
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- 湾区求职分享:三个月刷题拿到 Google offer,欢迎踊跃提问
本文仅以个人经历和个人观点作为参考.如能受益,不胜荣幸. 本文会不断的修正,更新.希望通过大家的互动最后能写出一份阅者受益的文章. 本文纯手打,会有错别字,欢迎指出,虚心接受及时更改. 小马过河,大牛 ...
- 转: 如何使用jstack分析线程状态
这个讲的好系列: 如何使用jstack分析线程状态 转:http://www.jianshu.com/p/6690f7e92f27 背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于 ...
- 在 word 中对正文和目录进行分节显示页码
使用版本 word 2016 使目录独占一页:在正文第一页的第一个字符前插入分节符下一页(布局--分节符--下一页),此时会在正文第一个字符前插入分节符.在之前插入一张空白页,用于插入目录.(插入 - ...
- JAVA代码实现多级树结构封装对象
树结构在开发中经常遇到.例如:部门.菜单.员工架构等等.下面用部门作为例子构造部门结构树 1.部门表:dept -- ---------------------------- -- Table str ...
- ES6,Array.of()函数的用法
ES6为Array增加了of函数用已一种明确的含义将一个或多个值转换成数组. 因为,用new Array()构造数组的时候,是有二意性的. 构造时,传一个参数,表示生成多大的数组. 构造时,传多个参数 ...