0

vb.net の vmware.vim-library を使用して、vCenter インフラストラクチャ内のすべてのホスト、vm、およびストレージ アダプターを列挙しようとしています。

しかし、HBA から WWN を取得する方法が見つかりません...powershell には「portworldwidename」というプロパティがありますが、これは .net では使用できません。

foreach($hba in $esx.Config.StorageDevice.HostBusAdapter){
  if($hba.GetType().Name -eq "HostFibreChannelHba"){
    $wwn = $hba.PortWorldWideName
    $wwnhex = "{0:x}" -f $wwn
    Write-Host $wwnhex
    }
}

これは私がvb.netに持っているものです:

Dim c As New VimClient
c.Connect("https://myvcenter/sdk")
c.Login("username", "password")

Dim vmsHosts = c.FindEntityViews(GetType(HostSystem), Nothing, Nothing, Nothing)

For Each evbHostSystem In vmsHosts
    Dim hs = CType(evbHostSystem, HostSystem)

    Console.WriteLine(hs.Name)

    Dim hbas = hs.Config.StorageDevice.HostBusAdapter

    For Each hba In hbas
        Console.WriteLine(hba.Model)

        'hba.portworldwidename is not available...
    Next
Next

助けてくれてありがとう!

よろしく、 ヤン

4

1 に答える 1

0

それを見つけた:

返される HBA オブジェクトのタイプを取得する必要があります。「HostFibreChannelHba」の場合は、「HostFibreChannelHba」にキャストする必要があります。その後、すべてのプロパティが使用可能になります。

VI API-Guide を詳しく調べる必要があります :)

Dim hbas = hs.Config.StorageDevice.HostBusAdapter

    For Each hba In hbas
        Console.WriteLine(hba.Model)

        If hba.GetType.Name.Equals("HostFibreChannelHba") Then
            Dim fibreHBA = CType(hba, HostFibreChannelHba)

            Console.WriteLine(String.Format("{0:x}", fibreHBA.PortWorldWideName))
        End If

    Next

よろしく、 ヤン

于 2013-11-11T11:36:54.860 に答える