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