最近公司需要做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. 淘管 ERP项目与淘宝对接中产生的若干问题及处理办法

    现象:ERP绑定淘宝后,下载商品数据时如果成功,ajax不断尝试重发. 原因:  /app/taoapi/lib/top/TopClient.php 中的curl()方法成功后,返回空值,而前端收到空 ...

  2. Fatal error: Undefined class constant 'MYSQL_ATTR_USE_BUFFERED_QUERY' in D:\inetpub\vhosts\zenpty.com\httpdocs\includes\database

    打开php.ini配置文件,找到php_pdo_mysql.dll,如果前面有分号";"则表示该行被注释掉了,将分号去掉,保存,然后重启apache服务,重新访问页面,问题解决了.

  3. 关于bootstrap列偏移的两种方式

    第一种方式: <div class="col-md-2 col-md-offset-9"> <input type="text" class= ...

  4. 解决Webservice内存溢出

    public class FileExercise : System.Web.Services.WebService { [WebMethod] public void HelloWorld() { ...

  5. hdu 1500 Chopsticks

    http://acm.hdu.edu.cn/showproblem.php?pid=1500 dp[i][j]为第i个人第j个筷子. #include <cstdio> #include ...

  6. 狗屎的asp.net core 果然发生了重大的变更

    狗屎的asp.net core  果然发生了重大的变更 ....仔细看官方的文档,想骂娘....你发布版本的时候,能不能先想好先设计好再发布?朝三暮四...大撒笔....你老这样变来变去,谁还敢碰你啊 ...

  7. MFC修改任务栏图标及程序运行exe图标

    修改左上角的图标和任务栏里图标 在对话框构造函数中 1 CTestDlg::CTestDlg(CWnd* pParent )2 : CDialog(CTestDlg::IDD, pParent)3 { ...

  8. tangible T4 Editor 2.2.3 plus modeling tools for VS 2012 扩展名

    tangible T4 Editor 2.2.3 plus modeling tools for VS 2012 扩展名 tangible T4 Editor 2.2.3 plus modeling ...

  9. ORACLE 中写入txt文本与从Txt文件中读入数据 修改表结构

    --创建一个表 DROP TABLE TEST CASCADE CONSTRAINTS ; CREATE TABLE TEST(A VARCHAR(30),B VARCHAR(30)); --查看具体 ...

  10. redhat6.3 64位更新源(使用网易源)全过程记录

    本篇博客参考:http://chinaxiaoyu.diandian.com/post/2013-01-24/40046529897.首先在浏览器中输入http://tel.mirrors.163.c ...