最近公司需要做Hyper-V的远程管理,在现有产品基础上扩展对Hyper V的管理,实现远程开关机、远程开启虚拟机会话,其他内容可查看MSDN中有对Hyper-V的描述相关实例代码Wmi操作hyper的工具类hyper-V

ok,废话不说,正文开始...

1.安装hyper-v虚拟机,这里安装的是2012版,安装好之后创建两个虚拟机

2.查阅了好多资料,通用的方式是用Wmi来与hyper进行数据交互,通过工具扫描一下hyper的wmi节点

发现一共有22个直属类

每个类都逐个查看一下,发现能够交互的只有3个大类

逐个调用一下:

 [dynamic: ToInstance, provider("VmmsWmiInstanceAndMethodProvider"), Locale()]
class Msvm_ComputerSystem : CIM_ComputerSystem
{
[read, ArrayType("Indexed")] uint16 AssignedNumaNodeList[];
[read, Units("MilliSeconds")] uint64 OnTimeInMilliseconds;
[read] uint32 ProcessID;
[read] datetime TimeOfLastConfigurationChange;
[Implemented, ValueMap{"", "", "", "", "", "", "", "", "", "", "", "", ""}, Bypass_GetObject, ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}] uint32 RequestStateChange([IN, ValueMap{"", "", "", "", "", "", "", "", "", "", "", "..", "32768..65535"}, ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}] uint16 RequestedState, [OUT] CIM_ConcreteJob ref Job, [IN, SubType("Interval"): ToInstance ToSubClass] datetime TimeoutPeriod);
};

其中:

"0", "4096", "32768", "32769", "32770", "32771", "32772", "32773", "32774", "32775", "32776", "32777", "32778"

"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "32768..65535"

这些数字分别代表虚拟机实例的各个状态,如:运行,关机,正在关机,等等。如:

                 Unknown
Running
Off
Paused
Suspended
Starting
Snapshotting
Migrating
Saving
Stopping
Deleted
Pausing
Resuming

保存虚拟机数据的类为 Msvm_ComputerSystem,通过调用Msvm_ComputerSystem可以获取远程hyper下各虚拟机信息,该类包含宿主机的描述:

instance of Msvm_ComputerSystem
{
AssignedNumaNodeList = NULL;
Caption = "宿主计算机系统";
CreationClassName = "Msvm_ComputerSystem";
Dedicated = NULL;
Description = "Microsoft 宿主计算机系统";
ElementName = "HYPER-V";
EnabledDefault = ;
EnabledState = ;
HealthState = ;
IdentifyingDescriptions = NULL;
InstallDate = NULL;
Name = "HYPER-V";
NameFormat = NULL;
OnTimeInMilliseconds = NULL;
OperationalStatus = {};
OtherDedicatedDescriptions = NULL;
OtherEnabledState = NULL;
OtherIdentifyingInfo = NULL;
PowerManagementCapabilities = NULL;
PrimaryOwnerContact = NULL;
PrimaryOwnerName = NULL;
ProcessID = NULL;
RequestedState = ;
ResetCapability = ;
Roles = NULL;
Status = "OK";
StatusDescriptions = {"确定"};
TimeOfLastConfigurationChange = NULL;
TimeOfLastStateChange = NULL;
};

虚拟机的描述:

instance of Msvm_ComputerSystem
{
AssignedNumaNodeList = {};
Caption = "虚拟机";
CreationClassName = "Msvm_ComputerSystem";
Dedicated = NULL;
Description = "Microsoft 虚拟机";
ElementName = "windows2012";
EnabledDefault = ;
EnabledState = ;
HealthState = ;
IdentifyingDescriptions = NULL;
InstallDate = "20160719031827.000000-000";
Name = "F6F52FD7-42B6-4C2D-BADC-C61F9B5FFD21";
NameFormat = NULL;
OnTimeInMilliseconds = "";
OperationalStatus = {};
OtherDedicatedDescriptions = NULL;
OtherEnabledState = NULL;
OtherIdentifyingInfo = NULL;
PowerManagementCapabilities = NULL;
PrimaryOwnerContact = NULL;
PrimaryOwnerName = NULL;
ProcessID = ;
RequestedState = ;
ResetCapability = ;
Roles = NULL;
Status = "OK";
StatusDescriptions = {"正常运行"};
TimeOfLastConfigurationChange = "20160719084459.532773-000";
TimeOfLastStateChange = "20160719084459.000000-000";
};
instance of Msvm_ComputerSystem
{
AssignedNumaNodeList = {};
Caption = "虚拟机";
CreationClassName = "Msvm_ComputerSystem";
Dedicated = NULL;
Description = "Microsoft 虚拟机";
ElementName = "win2008";
EnabledDefault = ;
EnabledState = ;
HealthState = ;
IdentifyingDescriptions = NULL;
InstallDate = "20160719081005.000000-000";
Name = "7A591782-9EEC-46CD-AE43-AFE4EFD23390";
NameFormat = NULL;
OnTimeInMilliseconds = "";
OperationalStatus = {};
OtherDedicatedDescriptions = NULL;
OtherEnabledState = NULL;
OtherIdentifyingInfo = NULL;
PowerManagementCapabilities = NULL;
PrimaryOwnerContact = NULL;
PrimaryOwnerName = NULL;
ProcessID = NULL;
RequestedState = ;
ResetCapability = ;
Roles = NULL;
Status = "OK";
StatusDescriptions = {"正常运行"};
TimeOfLastConfigurationChange = "20160719104106.665157-000";
TimeOfLastStateChange = "20160719104106.000000-000";
};

虚拟机信息获取完毕!

通过Wmi实现Hyper-V远程管理(一)的更多相关文章

  1. 远程管理无管理员权限的PC客户端

    一.简介 为提高操作系统稳定性.流畅度,分公司同事PC用户没有administrator权限,导致同事不能对系统进行设置.不能自行安装软件.网管使用远程管理软件(如Teamviewer.QQ)为同事提 ...

  2. windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理

    windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理 今天在dell r710 上用windows server 2008 r2企业版hyper v 做虚拟化,添 ...

  3. 设置Hyper V

    1.打开服务器管理器 2.添加角色和功能 3.安装类型 -> 基于角色或基于功能的安装 4.服务器选择 -> 下一步 5.服务器角色 勾选"Hyper V"

  4. 【Linux远程管理】SSH协议远程管理

    SSH(Secure Shell)协议.命令行界面(CLI)下的远程管理工具,几乎所有的操作系统都有,区别于Telnet,SSH在进行数据传送时会对数据进行加密,所以SSH是比较安全的协议.几乎所有的 ...

  5. C#中操作WMI的类库-实现远程登录共享

    WMI是Windows Management Instrumentation的简称,即:视窗管理规范.在Windows 2000或以后的版本中均安装得有,NT4.0则需要安装WMI的核心组件.通过WM ...

  6. Windows 8.1 IIS 8.5 远程管理 Windows 2008 R2 IIS 7.0

    案例: Windows 8.1 x64 IIS 8.5 inetmgr_amd64_v1.1_en-US.msi Windows 2008 R2  x64 IIS  7.0 在Win8.1 通过IIS ...

  7. Linux远程管理之SVN,VNC

    一.远程管理的基本概念 首先我们来初略的讲讲远程管理的一些基本概念.对于我们使用的计算机来说,如果是个人计算机,就没有远程管理这一概念了,想用的时候开机就能使用,而对于我们的服务器来说,就不同了,对于 ...

  8. 远程管理服务 Windows Remote Management (WS-Management)

    Windows Remote Management (WS-Management) Windows 远程管理(WinRM)服务执行 WS-Management 协议来实现远程管理.WS-Managem ...

  9. Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法

    远程虚拟控制台依赖于java运行环境(jre),在通过浏览器打开链接前,系统必须安装jre环境,远程管理控制台其实就是一个java程序,打开相应的网站会下载一个jnlp(java网络加载协议)的文件, ...

随机推荐

  1. SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]

    --====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...

  2. label的for属性与inputde的id元素绑定

    <form> <label for="male">Male</label> <input type="radio" n ...

  3. Python中def的用法

    def定义了一个模块的变量,或者说是类的变量.它本身是一个函数对象.属于对象的函数,就是对象的属性. def func():    return 2print func() # 1func = 5pr ...

  4. iOS Layer CABasicAnimation

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  5. 400 bad request

    这是查到的Http400状态码的定义 400  错误请求 - 请求中有语法问题,或不能满足请求. HTTP 400 - 请求无效. 表单传入的参数                     userNa ...

  6. DES、AES、TEA加密算法的比较

    1.     DES算法介绍: DES算法具有对称性, 既可以用于加密又可以用于解密.对称性带来的一个很大的好处在于硬件实现, DES 的加密和解密可以用完全相同的硬件来实现.DES 算法的明文分组是 ...

  7. ViewBag、ViewData和TempData使用方法、区别与联系

    一.区别与联系 ViewData 和 TempData 都可以传递弱类型数据,区别如下:TempData 只在当前 Action 中有效,生命周期和 View 相同:保存在Session中,Contr ...

  8. javascript之url转义escape()、encodeURI()和decodeURI()

    我们可以知道:escape()除了 ASCII 字母.数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法.而encodeURI() 用于编码整个URI,因 ...

  9. 汉子英文同行 连续英文不折行断行 的问题 兼容FIREFOX浏览器CSS

    #intro {white-space: normal;word-break: break-all;overflow: hidden;} --------------------- 案例2

  10. Unity 之圆环算法

    首先我们要明白圆环生成的原理,其实说白了并不是圆环,而是圆.因为我们使用的预制物体时Cube(物体本身是有大小的)难免会有发生实物的折叠看起来给人的感觉是圆环而已. 1.1 几何中我们要画一个圆,因为 ...