c#vmware sdk:获取主机系统上托管的所有来宾vm的列表?

c#vmware sdk:获取主机系统上托管的所有来宾vm的列表?,c#,vmware,C#,Vmware,假设我有一些虚拟机(linuxtestguest、ubunutestguest…)托管在名为test的虚拟服务器上 如何获得“测试”上托管的所有虚拟机的列表 我可以通过以下方式列出所有主机(在本例中为“测试”):根文件夹(文件夹)->子实体(数据中心)->主机文件夹(文件夹)->子实体(计算机资源)->主机(主机系统) 我可以通过以下方式列出所有可用的虚拟机:rootFolder(folder)->childentity(datacenter)->vmFolder(folder)->childe

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

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

我可以通过以下方式列出所有主机(在本例中为“测试”):根文件夹(文件夹)->子实体(数据中心)->主机文件夹(文件夹)->子实体(计算机资源)->主机(主机系统)

我可以通过以下方式列出所有可用的虚拟机:rootFolder(folder)->childentity(datacenter)->vmFolder(folder)->childentity(VirtualMachine)

但我如何将两者联系起来呢?获得一台主机后,如何将所有虚拟机连接到该主机?(如果可能的话,另一种方式)


这在我看来非常基本(这是我能想到的SDK的第一次实际使用),但我没有找到任何文档。

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

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

https://<vcenter-ip>/mob
https:///mob

输入凭据后,您将进入虚拟托管对象的html浏览器。从“内容”开始,从那里你可以进入根文件夹->儿童实体等等。当您进入主机(HostSystem)时,您将在properties表的末尾看到我提到的属性“vm”。祝您好运:)

一旦您通过C#代码连接到vCenter,您就可以获得所有虚拟机信息,下面是要开始的示例代码,下面的代码连接到vCenter服务器并以列表的形式获取所有虚拟机信息,使用此列表,您可以遍历到要访问的虚拟机的所有属性

//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);`
您可以搜索FindentialView,因为它根据需要接受不同的参数,这里我使用了“VirtualMachine”参数来获取VM的信息,您可以使用“Datastore”来获取所有数据存储信息,同样地。希望这有助于解决您的问题