繁体   English   中英

vmware .net api帮助vmware.vim.dll问题

[英]vmware .net api help vmware.vim.dll problems

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

“无法将类型'Vmware.Vim.Viewbase'转换为'Vmware.Vim.LicenseManagerLicenseInfo'”

但是上面的“ mod”声明效果很好。

我也尝试过:

  • HostLicenseConnectInfo
  • LicenseAssignmentManagerLicenseAssignment
  • 许可证管理器

我希望曾经使用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;
}

我明天必须去上班看一下(家里没有用于.NET的ESX和VMWare SDK),但是我已经做了一些工作。

我写了一个泛型方法,该方法包装FindEntityViews并将过滤器作为参数。 这样可以轻松搜索任何内容。 另外我还注意到搜索作为ManagedObjectReferences返回,并且不能转换为子类。 您必须通过传递ManagedObjectReference作为参数来构造它们。

另外,我发现搜索PowerCLI示例并观看即时窗口中的类对于浏览此API很有帮助。 这是一个相当不错的SDK,但是它们将所有类都放在一个名称空间中,并且存在很多样式上的不一致(Device而不是Devices,并且当枚举存在时,属性采用字符串而不是枚举)。

我想出了办法:),通过使用http:// vcenter_hostname / mob,我可以更好地浏览api。 这里是我做的,再加上而不是使用这是类型为“主机”的HostSystem我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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM