C#无法连接到vmware

use*_*577 5 c# vmware

我有一个项目,我将不得不构建双堆栈虚拟机.我通常使用powershell,但它似乎无法做到这一点.我可能不得不使用C#.我有点生疏,但由于某种原因,这段代码给我一个错误"无法创建抽象类或接口的实例'VMware.Vim.VimClient'".

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;
        }
Run Code Online (Sandbox Code Playgroud)

我添加了对项目的引用.我一定忘了做点什么.

Dan*_*e W 5

根据https://communities.vmware.com/thread/478700:"要么坚持上面提到的PowerCLI 5.5版本,要么修改代码以使用VimClientImpl类而不是VimClient(现在是一个接口)."

我用过的一个完整的简单例子:

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("admin@vsphere.local", "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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

添加对"C:\ Program Files(x86)\ VMware\Infrastructure\vSphere PowerCLI\VMware.Vim.dll"的引用.更新主机名,密码; 和volia!