2017-10-18 4 views
0

VMのMORのリストを取得できましたが、それを実際のVM名に変換する方法はありますか? 私は、VMのMORを取得するために、TraversalspecでPropertySpecを使用しましたが、実際の名前に変換するにはどうすればいいですか? 私は例えば 'VirtualMachine-15'を持っています。私は名前を取得する方法を見つけることができません。C#API MORからVM名を取得する

私はvmware.vim.dllを使用しています。

以下

VMののMORを取得するためのコードの一部です:それは価値がある何のため

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); 
} 

は基本的に私はclient.GetViewにMORを渡す(MOR、null)を持っていたと私はmyselを見つけましたその視点に応じて、関連付けられたホストまたはVMの新しい管理対象オブジェクトを使用します。

関連する問題