1

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

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

我可以按照 rootFolder (文件夹) -> childentity (datacenter) -> hostFolder(Folder) -> childentity (ComputerResource) -> host(HostSystem) 列出所有主机(在我的情况下为“测试”)

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

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

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

4

2 回答 2

0

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

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

https://<vcenter-ip>/mob

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

于 2013-04-03T20:58:59.117 回答
0

通过 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”获取所有数据存储信息等。希望它有助于解决您的问题。

于 2016-07-08T10:43:50.407 回答