Friday, June 14, 2019

To find multipath of multiple ESXi hosts from a cluster

$vmhosts = Get-Cluster "cluster name" | Get-VMHost

foreach($vmhost in $vmhosts)
{
  $hostview = get-view $vmhost.id
  $hostview.Config.StorageDevice.ScsiTopology.Adapter |?{ $_.Adapter -like "*FibreChannelHba*" } | %{
        $hba = $_.Adapter.Split("-")[2]

        $active = 0
        $standby = 0
        $dead = 0

        $_.Target | %{
            $_.Lun | %{
                $id = $_.ScsiLun

                $multipathInfo = $view.Config.StorageDevice.MultipathInfo.Lun | ?{ $_.Lun -eq $id }

                $a = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "active" })
                $s = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "standby" })
                $d = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "dead" })

                $active += $a.Count
                $standby += $s.Count
                $dead += $d.Count
            }
    }
    $result += "{0},{1},{2},{3},{4}" -f $view.Name.Split(".")[0], $hba, $active, $dead, $standby
}

ConvertFrom-Csv -Header "VMHost", "HBA", "Active", "Dead", "Standby" -InputObject $result | export-csv -notypeinformation mpath.csv

<#

# $views = Get-View -ViewType "HostSystem" -Property Name,Config.StorageDevice
$result = @()

foreach ($view in $views | Sort-Object -Property Name) {
    Write-Host "Checking" $view.Name

    $view.Config.StorageDevice.ScsiTopology.Adapter |?{ $_.Adapter -like "*FibreChannelHba*" } | %{
        $hba = $_.Adapter.Split("-")[2]

        $active = 0
        $standby = 0
        $dead = 0

        $_.Target | %{
            $_.Lun | %{
                $id = $_.ScsiLun

                $multipathInfo = $view.Config.StorageDevice.MultipathInfo.Lun | ?{ $_.Lun -eq $id }

                $a = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "active" })
                $s = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "standby" })
                $d = [ARRAY]($multipathInfo.Path | ?{ $_.PathState -like "dead" })

                $active += $a.Count
                $standby += $s.Count
                $dead += $d.Count
            }

        $result += "{0},{1},{2},{3},{4}" -f $view.Name.Split(".")[0], $hba, $active, $dead, $standby
    }
 }
}


ConvertFrom-Csv -Header "VMHost", "HBA", "Active", "Dead", "Standby" -InputObject $result | export-csv -notypeinformation mpath.csv

#>

No comments:

Post a Comment

NSX-V vs NSX-T – Basic Comparison

                                            NSX-V                      NSX-T  Tight integration with vSphere Yes No Works without vCenter No...