【问题标题】:c# vmware sdk : get list of all guest vm hosted on hostsystem?c# vmware sdk:获取主机系统上托管的所有来宾 vm 的列表?
【发布时间】:2012-10-29 17:18:55
【问题描述】:

假设我有一些虚拟机(linuxtestguest、ubunuttestguest...)托管在名为 test 的虚拟服务器上。

如何获取托管在“测试”上的所有虚拟机的列表?

我可以按照 rootFolder (文件夹) -> childentity (datacenter) -> hostFolder(Folder) -> childentity (ComputerResource) -> host(HostSystem) 列出所有主机(在我的例子中是“test”)

我可以按照 rootFolder (文件夹) -> childentity (datacenter) -> vmFolder(Folder) -> childentity (VirtualMachine) 列出所有可用的 Vms

但是如何将两者联系起来呢?获得主机后,我如何将所有虚拟机连接到它? (如果可能的话,反过来)

这对我来说看起来很基础(这是我能想到的 SDK 的第一个实际用途),但我没有找到任何文档。

【问题讨论】:

    标签: c# vmware


    【解决方案1】:

    通过 C# 代码连接到 vCenter 后,您可以获取所有 VM 信息,下面是示例代码开始,以下代码连接到您的 vCenter 服务器并获取所有 VM 的信息作为列表并使用此列表你可以遍历你想要访问的VM的所有属性。

    //Include VMware C# sdk VMware.VIM dll as reference in your project
    //try to invoke client connection
    VMware.Vim.VimClientImpl client = new VimClientImpl();
    client.Connect(@"VMware_Server_IP/sdk");
    // Login using username/password credentials
    UserSession session = client.Login("USERNAME", "PASSWORD");
    
    //Getting all the virtual machine and the datastore info from the VCenter
    NameValueCollection filter = new NameValueCollection();
    IList vmList = client.FindEntityViews(typeof(VirtualMachine), null, filter, null);`
    

    你可以搜索FindEntityViews,因为它根据需要接受不同的参数,这里我使用“VirtualMachine”参数来获取VM的信息,你可以使用“Datastore” 以获取所有数据存储信息等。希望它有助于解决您的问题。

    【讨论】:

      【解决方案2】:

      我不确定这是否仍然相关。但是你在一个主机上有一个名为“vm”的属性,它列出了这个主机上的虚拟机。

      顺便说一句,我不确定您是否熟悉它,但您始终可以使用虚拟中心的mob(托管对象浏览器)。你可以通过浏览到这个网址来做到这一点:

      https://<vcenter-ip>/mob
      

      输入凭据后,您将进入虚拟托管对象的 html 浏览器。从“内容”开始,您可以从那里前往 rootFolder->childEntity 等等。当您到达 host(HostSystem) 时,您会在属性表的末尾看到我提到的属性“vm”。祝你好运:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-25
        • 2019-10-01
        • 1970-01-01
        • 2010-11-12
        • 2018-08-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-18
        相关资源
        最近更新 更多