2017-10-18 149 views
0

我能够获得虚拟机的MOR的列表,但是有没有办法将其转换为实际的虚拟机名称? 我使用PropertySpec和Traversalspec来获取虚拟机的MOR,但是如何将其转换为实际的名称。 我有例如'VirtualMachine-15'。我无法找到获取名称的方法。c#API从MOR获取虚拟机的名字

我正在使用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); 

         } 
       } 
      } 
     } 

感谢

回答

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,空),我发现mysel f与关联主机或vm的全新托管对象相关,具体取决于角度。