vmware.net api帮助解决vmware.vim.dll问题
本文关键字:vmware dll 问题 vim 帮助 net api 解决 | 更新日期: 2023-09-27 18:22:15
Vmware的.net api引用有些混乱,很难理解。我已经能够连接到我的vcenter主机,然后获得esxi主机的列表。然后我就可以使用HostKernelModuleSystem
获取主机上所有正在运行的模块,并探测变量"mod"上的属性。。。但我不知道如何获取许可证信息,我尝试在下面创建一个对象lic
,尝试vmware中所有不同类型的"类型",类型中包含license一词。但是,它从来都不起作用——用LicenseManagerLicenseInfo lic = ....
转换线路有问题——我总是得到以下结果:
"无法将类型'Vmware.Vim.Viewbase'转换为'Vmware.Vim.LicenseManagerLicenseInfo'"
但是上面关于"mod"的声明很好。
我也试过:
- 主机许可证连接信息
- 许可证转让经理许可证转让
- 许可证管理器
我希望曾经使用过vmware.netapi的人能够阐明我做错了什么?我刚接触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;
}
我明天必须去上班看看这个(家里没有ESX和VMWare SDK for.NET),但我已经做了一些工作。
我编写了一个泛型方法,它包装FindEntityViews并将筛选器作为参数。这使得搜索任何东西都很容易。我还注意到,搜索返回为ManagedObjectReferences,并且不能强制转换为子类。您必须将ManagedObjectReference作为参数来构造它们。
此外,我发现搜索PowerCLI示例并在immediate窗口中查看类对导航此API非常有帮助。这是一个相当不错的SDK,但他们将所有类都放在一个命名空间中,并且有很多小的风格不一致(Device而不是Devices,以及当存在枚举时使用字符串而不是枚举的属性)。
我发现了如何做到这一点:)http://vcenter_hostname/mob我能够更好地浏览api。这是我所做的,而且我没有使用类型为HostSystem
的"主机",而是使用了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();
}