从vmware.vim.vimclient获取网络使用率

从vmware.vim.vimclient获取网络使用率,vmware,Vmware,我正在使用底层的PowerCLI dll来获取一些C#功能,但似乎找不到有关如何获取统计信息的文档 下面是我试图在C#中重新创建的PowerCLI 我可以通过VMware.Vim.VimClientImpl#connect方法登录,也可以通过VMware.Vim.VimClient#FindEntityViews方法获取虚拟机,但从那里我不知道如何获取网络使用信息,也无法通过谷歌找到相关文档 如果有这些API的文档,我很想拥有它们,但与此同时,有人知道如何获取这些信息吗?我通过查看SOAP请求并

我正在使用底层的PowerCLI dll来获取一些C#功能,但似乎找不到有关如何获取统计信息的文档

下面是我试图在C#中重新创建的PowerCLI

我可以通过VMware.Vim.VimClientImpl#connect方法登录,也可以通过VMware.Vim.VimClient#FindEntityViews方法获取虚拟机,但从那里我不知道如何获取网络使用信息,也无法通过谷歌找到相关文档


如果有这些API的文档,我很想拥有它们,但与此同时,有人知道如何获取这些信息吗?

我通过查看SOAP请求并进行一些直观的跳跃,找到了答案

我认为VMWare API是基于状态的,与X11 API基于状态的方式类似(您可以处理服务器内存中的各种对象)

具体来说,首先将会话连接到服务器,然后使用该会话登录。当您连接到会话时,vmware将返回“manager对象”及其后续MoRef的列表。因此,查询此信息的正确方法如下:

VimClient vimClient = new VMware.Vim.VimClientImpl();
var serviceContent = vimClient.Connect(hostname, VMware.Vim.CommunicationProtocol.Https, null);
var userSession = vimClient.Login(un, pwd);

NameValueCollection filter = new NameValueCollection();
filter.Add("Name", vmName2LookFor);

String[] viewProperties = null;

var VMs = vimClient.FindEntityViews(typeof(VMware.Vim.VirtualMachine), null, filter, viewProperties);
              .Cast<VMware.Vim.VirtualMachine>()
              .ToList();
var vm = VMs.FirstOrDefault(); // blindly grab for example purposes

var pm = new VMware.Vim.PerformanceManager(vimClient, serviceContent.PerfManager);
pm.QueryAvailablePerfMetric(vm.MoRef, DateTime.Now.AddDays(-1), DateTime.Now, null)

我在esxi 6.7上用VMware.Vim.HostSystem实体尝试了这一点,以尝试获取CPU性能数据,但是我的pm结果集是空的。有什么想法吗?
VimClient vimClient = new VMware.Vim.VimClientImpl();
var serviceContent = vimClient.Connect(hostname, VMware.Vim.CommunicationProtocol.Https, null);
var userSession = vimClient.Login(un, pwd);

NameValueCollection filter = new NameValueCollection();
filter.Add("Name", vmName2LookFor);

String[] viewProperties = null;

var VMs = vimClient.FindEntityViews(typeof(VMware.Vim.VirtualMachine), null, filter, viewProperties);
              .Cast<VMware.Vim.VirtualMachine>()
              .ToList();
var vm = VMs.FirstOrDefault(); // blindly grab for example purposes

var pm = new VMware.Vim.PerformanceManager(vimClient, serviceContent.PerfManager);
pm.QueryAvailablePerfMetric(vm.MoRef, DateTime.Now.AddDays(-1), DateTime.Now, null)
String[] viewProperties = new[]{ "Guest.Net" };