c#API从MOR获取VM名称

问题描述 投票:0回答:1

我能够获得VM的MOR列表,但有没有办法将其转换为实际的VM名称?我使用带有Traversalspec的PropertySpec来获取VM的MOR,但是如何将其转换为实际名称。我有'VirtualMachine-15'。我找不到获得这个名字的方法。

我正在使用vmware.vim.dll。

以下是获取更多VM的代码的一部分:

 ObjectContent[] objs = pCollector.RetrieveProperties(pFss);

        for (int i = 0; i < objs.Length; i++)
        {


            DynamicProperty[] dps = objs[i].PropSet;

            foreach (DynamicProperty d in dps)
            {

                if (d.Name == "childEntity")
                {
                    ManagedObjectReference[] vmMORs = (ManagedObjectReference[])d.Val;

                    foreach(ManagedObjectReference vmMOR in vmMORs )
                        {

                        listview1.Items.Add(vmMOR);

                        }
                }
            }
        }

谢谢

c# vmware vsphere esxi
1个回答
0
投票

为了它的价值,我遇到了一个类似的问题,经过一天的试验和错误后,我得出了一个问题:

VimClientImpl client = new VimClientImpl();
client.Login(vSphereURI, loginID, loginPW);
List<EntityViewBase> vmlist = client.FindEntityViews(typeof(VirtualMachine), null, filter1, null);
List<EntityViewBase> hostlist = client.FindEntityViews(typeof(HostSystem), null, null, null);

foreach (HostSystem host in hostlist)
{
   host.UpdateViewData();
   Console.WriteLine(@"# Host: " + host.Name + @": ");

   for (int i = 0; i < host.Vm.Length; i++)
   {
      VirtualMachine vm = (VirtualMachine)client.GetView(host.Vm[i], null);
      Console.WriteLine(vm.Name);
   }
}

foreach (VirtualMachine vm in vmlist)
{
   vm.UpdateViewData();
   HostSystem host = (HostSystem)client.GetView(vm.Runtime.Host, null);
   Console.WriteLine("name: " + vm.Name + " >>lives on>> " + host.Name);
}

基本上我必须将MOR传递给client.GetView(MOR,null),我发现自己有一个新的托管对象用于关联的主机或vm,具体取决于透视图。

© www.soinside.com 2019 - 2024. All rights reserved.