c#vmware sdk:获取hosts系统上托管的所有guest虚拟机vm的列表?

时间:2012-10-29 17:18:56

标签: c# vmware

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

如何获取“test”上托管的所有VM的列表?

我可以通过以下rootFolder(文件夹)列出所有主机(在我的情况下为“test”) - > childentity(数据中心) - > hostFolder(Folder) - > childentity(ComputerResource) - >主机(HostSystem)

我可以通过以下rootFolder(文件夹)列出所有可用的Vms - > childentity(数据中心) - > vmFolder(文件夹) - > childentity(VirtualMachine)

但是如何将这两者联系起来呢?获得主持人如何获得附加的所有vms? (如果可能的话,反过来)

这对我来说非常基本(这是我能想到的SDK的第一个实际用途),但我找不到任何文档。

2 个答案:

答案 0 :(得分:0)

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

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

https://<vcenter-ip>/mob

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

答案 1 :(得分: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的信息,您可以使用“数据存储区”以获取所有数据存储信息。希望它有助于解决您的问题。