C#无法连接到VMware。

5

我有一个项目,需要构建双栈虚拟机。我通常使用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;
        }

我已经将该项目的引用添加进去了,可能是我忘记做什么了。


1
VimClient 是一个抽象类,你需要创建另一个继承自它的类的实例。 - DavidG
@DavidG,在调用函数之前添加函数体。 :-) - Afzaal Ahmad Zeeshan
1
@DavidG:除了网上所有的例子都使用 new VimClient(); 这一事实之外。 - Thomas Weller
@ThomasW。我根据给出的错误信息进行操作,而不是VMWare API。 - DavidG
1个回答

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

在 "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\VMware.Vim.dll" 添加引用。更新主机名、密码; 然后就可以了!


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”中。 - Dane W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接