2014-09-11 1 views
5

이중 스택 가상 시스템을 구축해야하는 프로젝트가 있습니다. 나는 보통 powershell을 사용하지만 그렇게 할 수없는 것으로 보인다. C#을 사용해야 할 수도 있습니다. 이 문제에 다소 녹슬었지만 어떤 이유로이 코드는 "추상 클래스 또는 인터페이스 'VMware.Vim.VimClient'인스턴스를 만들 수 없습니다."라는 오류 메시지가 나타납니다.C#에서 VM웨어에 연결할 수 없습니다.

using System.Text; 
using VMware.Vim; 

namespace Vimfunctions 
{ 

    public class VimFunctions 
    { 
     protected VimClient ConnectServer(string viServer, string viUser, string viPassword) 
     { 
      **VimClient vClient = new VimClient();** 
      ServiceContent vimServiceContent = new ServiceContent(); 
      UserSession vimSession = new UserSession(); 

      vClient.Connect("https://" + viServer.Trim() + "/sdk"); 
      vimSession = vClient.Login(viUser, viPassword); 
      vimServiceContent = vClient.ServiceContent; 

      return vClient; 
     } 

프로젝트에 대한 참조를 추가했습니다. 나는 뭔가를하는 것을 잊었을 것입니다.

+1

'VimClient'는 추상 클래스이므로이 클래스로부터 상속받은 다른 클래스의 인스턴스를 만들어야합니다. – DavidG

+0

@DavidG를 호출 한 다음 호출하기 전에 본문을 함수에 추가하십시오. :-) –

+1

@DavidG : 웹상의 모든 예제가 실제로'new VimClient(); '를 사용한다는 것을 제외하고는. –

답변

5

https://communities.vmware.com/thread/478700 : "언급 한대로 PowerCLI 5.5 릴리스를 사용하거나 VimClient (현재 인터페이스 임) 대신 VimClientImpl 클래스를 사용하도록 코드를 수정하십시오."

내가 사용하는 완전한 간단한 예

: "은 vSphere PowerCLI \ VMware.Vim.dll \ \의 Program Files (x86)를 \ VM웨어 \ 인프라 C"

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using VMware.Vim; 

namespace vSphereCli 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      VMware.Vim.VimClientImpl c = new VimClientImpl(); 
      ServiceContent sc = c.Connect("https://HOSTNAME/sdk"); 
      UserSession us = c.Login("[email protected]", "password"); 
      IList<VMware.Vim.EntityViewBase> vms = c.FindEntityViews(typeof(VMware.Vim.VirtualMachine), null, null, null); 
      foreach (VMware.Vim.EntityViewBase tmp in vms) 
      { 
       VMware.Vim.VirtualMachine vm = (VMware.Vim.VirtualMachine)tmp; 
       Console.WriteLine((bool)(vm.Guest.GuestState.Equals("running") ? true : false)); 
       Console.WriteLine(vm.Guest.HostName != null ? (string)vm.Guest.HostName : ""); 
       Console.WriteLine(""); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

이 참조를 추가합니다. 호스트 이름, 암호를 업데이트하십시오. 그리고 volia!

+1

버전 6.5 (https://developercenter.vmware.com/web/dp/tool/vsphere_powercli/6.5)의 경우 참조 파일은 "C : ₩ Program Files (x86) ₩ VMware ₩ Infrastructure ₩ PowerCLI ₩ Modules ₩ VMware"에 있습니다. VimAutomation.Core \ VMware.Vim.dll " –