This commit is contained in:
Zack Meier
2026-04-15 15:45:50 -05:00
commit 1d304511b8
613 changed files with 140998 additions and 0 deletions
@@ -0,0 +1,61 @@
<#
.SYNOPSIS
Retrieves HBA (Host Bus Adapter) device information, including WWN (World Wide Name) and WWP (World Wide Port Name), for specified VMware ESXi hosts.
.DESCRIPTION
This function connects to one or more VMware ESXi hosts and gathers detailed information about their HBA devices. The information collected includes the device name, WWN, WWP, and other relevant properties. This is useful for inventory, troubleshooting, or auditing storage connectivity in a VMware environment.
.PARAMETER VMHost
Specifies the ESXi host(s) from which to retrieve HBA information. Accepts one or more host names or objects.
.EXAMPLE
Get-ITDVMwareVMHostHBA -VMHost "esxi01.domain.local"
Retrieves HBA information from the specified ESXi host.
.EXAMPLE
Get-ITDVMwareVMHostHBA
Retrieves HBA information from all connected ESXi hosts.
#>
function Get-ITDVMwareVMHostHBA {
[CmdletBinding()]
param (
[string]
$VMHostName
)
begin {
}
process {
If ($PSBoundParameters.ContainsKey('VMHostName')) {
$AllVMHosts = Get-VMHost -Name $VMHostName
}
Else {
$AllVMHosts = Get-VMHost
}
ForEach ($VMHost in $AllVMHosts) {
$HBAs = $null
$HBAs = Get-VMHostHba -VMHost $VMHost -Type FibreChannel
ForEach ($HBA in $HBAs) {
$wwn = "{0:X}" -f $HBA.NodeWorldWideName
$wwp = "{0:X}" -f $HBA.PortWorldWideName
$obj = [PSCustomObject]@{
'VMHostName' = $VMHost.Name;
'Device' = $HBA.Device;
'Model' = $HBA.Model;
'Status' = $HBA.Status;
'NodeWorldWideName' = (0..7 | ForEach-Object { $wwn.Substring($_ * 2, 2) }) -join ':'
'PortWorldWideName' = (0..7 | ForEach-Object { $wwp.Substring($_ * 2, 2) }) -join ':'
}
Write-Output $obj
}
}
}
end {
}
}