Vmware的Vmware api引用有点混乱,很难理解。我已经能够连接到我的vcenter主机,然后得到esxi主机的列表。然后我可以使用HostKernelModuleSystem获取主机上所有正在运行的模块,并探测变量“mod”上的属性.但是我无法弄清楚如何获取许可信息,我尝试在下面创建一个对象lic,尝试使用这个类型的单词从vmware中获取所有不同类型的“类型”。但是,它从来不起作用
“无法将'Vmware.Vim.Viewbase‘转换为'Vmware.Vim.LicenseManagerLicenseInfo'”
但是上面关于“国防部”的声明很好。
我也尝试过:
我希望曾经与vmware .net api合作过的人能揭示我做错了什么?我刚接触C#大约一年了:)但是这些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;
}发布于 2012-02-02 03:42:12
我明天必须去上班看这个(家里没有ESX和VMWare SDK .NET ),但我已经做了一些工作。
我编写了一个泛型方法,它封装了FindEntityViews,并接受一个过滤器作为参数。这样就很容易找到任何东西。此外,我注意到搜索返回为ManagedObjectReferences,不能转换为子类。您必须构造它们,将ManagedObjectReference作为参数传递。
此外,我发现搜索PowerCLI示例并查看immeadiate窗口中的类对于导航此API非常有帮助。这是一个相当不错的SDK,但它们将所有类放在一个名称空间中,并且存在许多小的样式不一致(设备而不是设备和属性,在存在枚举时使用字符串而不是枚举)。
发布于 2012-02-17 13:46:35
我想出了怎么做:),通过使用http://vcenter_hostname/mob,我能够更好地通过api。下面是我所做的,并且没有使用HostSystem类型的" host“,而是使用了我的vCenter主机"client”的实例。
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();
}https://stackoverflow.com/questions/9106021
复制相似问题