2012-02-02 4 views
0

Vmwareの.net apiの参照は多少混乱しており、それに従うのは難しいです。 vcenterホストに接続してからesxiホストのリストを取得できました。その後、私はHostKernelModuleSystemを使ってホスト上のすべての実行中のモジュールを取得し、変数 "mod"のプロパティを調べることができました...しかし、私はライセンス情報を取得する方法を理解することができず、オブジェクトを作成しようとしましたlicそのタイプのライセンスという言葉を使って、すべての種類の "タイプ"をVM웨어から試してみてください。しかし、それは私が常に次を得るLicenseManagerLicenseInfo lic = ....の行を変換する問題を持って働くことはありません:vmware .net api help vmware.vim.dllの問題

「 『Vmware.Vim.LicenseManagerLicenseInfo』にタイプ 『Vmware.Vim.Viewbase』を変換できません」

"mod"の上の宣言はうまくいきます。

私も試してみました

  • HostLicenseConnectInfo
  • LicenseAssignmentManagerLicenseAssignment
  • LicenseManagerの

私は、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; 
} 

答えて

0

私はこれを見て明日仕事に行く必要があります(自宅で.NET用ESXおよびVMware SDKを持っていない)が、私は、この作品のビットをやりました。

私は、FindEntityViewsをラップし、フィルタを引数としてとるジェネリックメソッドを記述しました。それは何かを簡単に検索することができます。また、私は検索がManagedObjectReferencesとして戻って来て、サブクラスにキャストできないことに気付きました。 ManagedObjectReferenceを引数として渡してそれらを構築する必要があります。

また、PowerCLIのサンプルを検索して、immeadiateウィンドウのクラスを見ていると、このAPIの操作に非常に役立ちます。かなり上品なSDKですが、すべてのクラスを単一の名前空間に置き、スタイルの不一致はほとんどありません(DeviceではなくDeviceであり、enumが存在する場合には列挙型ではなく文字列をとるプロパティ)。

+0

更新の私のインスタンスjused:私はこれに取り組んでいるが、私は戻ってホストを取得するときにConfigManager.LicenseManagerプロパティを参照すると、nullであるため、何かを実行しようとするのは難しいです。 –

+0

ええ、私は同じことを知っている、私はそれを理解することはできません笑..私は、VMWareからAPIを次のようだと思ったが、私はそれが何もできないライセンスを取得する方法は質問 –

+0

申し訳ありませんが、私は困惑しています。私は来週も休暇中です。あなたがまだそれを理解していない場合は、APIを自分自身に慣れさせようとしているので、もう一度見ていきます。 –

0

私はそれを行う方法を考え出した:http://vcenter_hostname/mobを使用して、私はより良いapiを歩くことができました。ここで私がやったことで、プラス代わりにタイプ​​た「ホスト」を使用してので、私は私の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(); 
}