Hyper-VVirtual Server的升级版,主要用于运行和管理虚拟机。它的优点是可以同时管理和维护多台虚拟机,在不需要某台虚拟机的时候,可以把它关掉,用到再开开来,相比于使用物理机器,Hyper-V可以更好的优化资源的利用。利用强大的快照(Snapshot)功能,可以省去重装机器的烦恼。比如在机器刚装好的时候,做一个快照,用了一会觉得系统有问题了,再恢复到之前的状态,就相当于重装了一遍机器了。

Windows Server 2008 (及R2)中提供了一个直观的Hyper-V的管理界面,不仅可以管理本机的虚拟机,也可以连到别的服务器上去。但这毕竟是用户界面,需要手工操作的。在人们越来越懒的时代,我们更希望有自动化的管理,比如每隔一小时刷新一下虚拟机的状态,看看哪台机器不正常,然后发一封邮件出来……生活是多么惬意呀……

接下来开始第一步,连接到远程的Hyper-V服务器。Hyper-V的API是基于WMI的。至于WMI是什么,就不多说了,直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static VirtualSystemService Connect(string serverName)
{
    ManagementObject service = null;
    try
    {
        ManagementScope scope = new ManagementScope(@"\\" + serverName + @"\root\virtualization");
        scope.Connect();
        ObjectQuery query = new ObjectQuery("SELECT * FROM MsVM_VirtualSystemManagementService");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
        ManagementObjectCollection coll = searcher.Get();
        foreach (ManagementObject obj in coll)
        {
            service = obj;
        }
    }
    catch (ManagementException)
    {
        return null;
    }
    if (service == null)
    {
        return null;
    }
    return new VirtualSystemService(service, serverName);
}

第一行中的VirtualSystemService是一个自定义类型,用于对Hyper-V的控制。关键代码是第7行,当目标机器上没有Hyper-V服务的时候,scope.Connect();会抛出一个异常……不多说了,这段代码还是很简单易懂的。

您还可能感兴趣的日志:

  1. Hyper-V的自动化 (1) 获取虚拟机信息
  2. Hyper V中的快捷键
  3. C#中重载相等运算符
  4. 经典面试题 之 单链表找环
  5. 经典面试题 之 按单词逆序
  6. Bonjour 服务
  7. 在C语言中使用MSXML
  8. 经典面试题 之 查字典

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2004 - 2011 Leona+Suffusion theme by Sayontan Sinha