通过ManagedObjectReference查询VMWare?

4
我正在使用PowerCLI VMWare.Vim dll,但是我在C#中使用它。
以下是代码。
VimClient c = new VMware.Vim.VimClientImpl();
ServiceContent sc = c.Connect("");
UserSession us = c.Login("", "");

NameValueCollection filter = new NameValueCollection();
filter.Add("MoRef", "VirtualMachine-vm-12294");

 IList<VMware.Vim.EntityViewBase> vms2 = c.FindEntityViews(typeof(VMware.Vim.VirtualMachine), null, filter, null);

c.FindEntityViews 抛出了一个 InvalidProperty 异常。

我已经到处查找,但仍然无法弄清如何直接通过 MoRef 查询 VMware 的内容。有什么帮助吗?

2个回答

2
我知道这个答案来得有点晚,但是这就是答案。
VimClient c = new VMware.Vim.VimClientImpl();
ServiceContent sc = c.Connect("");
UserSession us = c.Login("", "");

NameValueCollection filter = new NameValueCollection();
filter.Add("Id", "vm-12294");

 IList<VMware.Vim.EntityViewBase> vms2 = 
c.FindEntityViews(typeof(VMware.Vim.VirtualMachine), null, filter, null);

请注意,我们按“Id”进行过滤,并从“VirtualMachine-vm-12294”的MoRef中删除“VirtualMachine-”。 从技术上讲,ID是“vm-12294”,而“VirtualMachine-vm-12294”的MoRef字符串是类型指示符,不是实际ID的一部分。

这在2021年似乎不起作用。属性Id未被识别。 - Macadameane

2

以下内容供需要的人使用...

您可以使用此VimClient.GetView方法,查看OverloadDefinitions:

VimClient.GetView(VMware.Vim.ManagedObjectReference moRef, string[] properties)

例如:

_vimClient.GetView(new ManagedObjectReference("VirtualMachine-vm-12294"),null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接