Getting a list of All ESXi Hosts and their WWNs
One of my customers was doing some work on their storage network and so wanted a list of all ESXi hosts and their WWNs. This struck me as another excellent scripting opportunity, so I pulled out my old Brocade 1:1 Zoning script and went to work. I really only needed a one-liner for this situation, so I extracted my needed syntax from that script and quickly put it together. Here's the (admittedly, ugly) command that I came up with: get-vmhost | select name,@{N="WWNs";E={($_.ExtensionData.config.storagedevice.hostbusadapter.PortWorldWideName | % {("{0:X}"-f$_ -split '(..)' | ? {$_}) -join ':'}) -join ", "}} That'll spit out a list with two columns, ESXi host names in one, and a comma separated list of WWNs in the other. So, what's that ugly expression in that select statement doing? Well, it's collecting all of the port WWNs on that ESXi host, then converting each one from decimal into hexadecimal (the "{0:X}&q