2012-02-02 32 views
0

Vmware的.net api参考有点令人困惑,难以遵循。我已经能够连接到我的vCenter主机,然后获得一个esxi主机列表。然后,我已经能够使用HostKernelModuleSystem获取主机上的所有正在运行的模块,并探测变量“mod”的属性...但我无法弄清楚如何获取许可证信息,我尝试在下面创建一个对象lic ,从类型中的单词许可证尝试所有不同类型的vmware的“类型”。但是,它永远不会奏效它有一个问题转换线与LicenseManagerLicenseInfo lic = ....我总是得到如下:vmware .net api help vmware.vim.dll问题

“无法将类型‘Vmware.Vim.Viewbase’到 ‘Vmware.Vim.LicenseManagerLicenseInfo’”

但上面的“mod”声明工作正常。

我也曾尝试:

  • HostLicenseConnectInfo
  • LicenseAssignmentManagerLicenseAssignment
  • LicenseManager有

我希望有人谁已与VMware .NET API的工作可以揭示我是什么的一些光做错了?我是C#的新手,大约1年:)但这些VMware API对我来说有些困惑。

esxList = client.FindEntityViews(typeof(HostSystem), null, null, null); 

foreach (HostSystem host in esxList) 
{ 
    HostKernelModuleSystem mod = (HostKernelModuleSystem)client.GetView(host.ConfigManager.KernelModuleSystem, null); 
    LicenseManagerLicenseInfo lic = (LicenseManagerLicenseInfo)client.GetView(host.ConfigManager.LicenseManager, null); 

    string name = lic.Name; 
} 

回答

0

我得明天上班看这个(没有ESX和VMware SDK在家.NET),但我已经做了一下这项工作的。

我写了一个包装FindEntityViews并将过滤器作为参数的泛型方法。这使得搜索任何东西都很容易。另外我注意到搜索作为ManagedObjectReferences返回,不能转换为子类。你必须构造它们传递ManagedObjectReference作为参数。

此外,我发现搜索PowerCLI示例,并观看immeadiate窗口中的类非常有助于浏览此API。这是一个相当不错的SDK,但他们把所有的类放在一个单独的命名空间中,并且存在很多小的样式不一致(设备而不是设备和属性,当存在枚举时,它们使用字符串而不是枚举)。

+0

更新我的实例“主持人”的:我在做这个,但是当我得到一个主机背面并查看它的ConfigManager.LicenseManager属性为空,因此很难尝试对它进行某些操作。 – 2012-02-02 14:36:08

+0

是的,我知道我得到了同样的东西,我无法弄清楚大声笑..我以为我是从vmware api,但我不知道,我想如果它null无法做任何事情,那么什么或如何获得许可证是问题 – 2012-02-03 13:40:36

+0

对不起,我很难过。我也在下周休假。如果你还没弄明白,我会再看一遍,因为我真的很想亲自熟悉API。 – 2012-02-03 15:30:14

0

我想通过使用http://vcenter_hostname/mob如何做到这一点:)我能够更好地通过api。这里是我做的,再加上而不是使用这是​​I型jused我的vCenter主机的“客户”

VMware.Vim.LicenseManager lic_manager = (VMware.Vim.LicenseManager)client.GetView(client.ServiceContent.LicenseManager, null); 
LicenseManagerLicenseInfo[] lic_found = lic_manager.Licenses; 

foreach (LicenseManagerLicenseInfo lic in lic_found) 
{ 
    string test = lic.Name.ToString(); 
    string test2 = lic.LicenseKey.ToString(); 
}