通过 ManagedObjectReference 查询 VMWare?
Query VMWare by ManagedObjectReference?
我正在使用 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 的东西。有帮助吗?
我知道这是一个很长的时间,但这里是问题的答案。
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 的一部分。
谁可能需要它...
你可以使用这个VimClient.GetView
方法,见OverloadDefinitions:
VimClient.GetView(VMware.Vim.ManagedObjectReference moRef, string[] properties)
例如:
_vimClient.GetView(new ManagedObjectReference("VirtualMachine-vm-12294"),null);
我正在使用 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 的东西。有帮助吗?
我知道这是一个很长的时间,但这里是问题的答案。
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 的一部分。
谁可能需要它...
你可以使用这个VimClient.GetView
方法,见OverloadDefinitions:
VimClient.GetView(VMware.Vim.ManagedObjectReference moRef, string[] properties)
例如:
_vimClient.GetView(new ManagedObjectReference("VirtualMachine-vm-12294"),null);