Quicktipp: WWN per PowerCLI
Mit Erschrecken habe ich festgestellt das mein letzer Blogeintrag beinahe ein Jahr alt ist. Dies muss ich ändern und habe direkt ein weiteres PowerCLI-Snippet. Leider weiß ich nicht mehr in welchem genauen Zusammenhang dieses entstanden ist, ich weiß nur noch das ein paar Kollegen dies benötigten um an die Storageadministatoren die entsprechenden WWNs (WorldWideNodeNames) ihrer Server zu übermitteln.
Auch ist dies nicht vollends aus meiner eigenen Feder entstanden, sondern enthält Elemente aus der VMware Community. Ich passte es allerdings auf die entsprechenden Gegebenheiten an und fügte Codeteile aus diversen Stellen zusammen.
Vor einiger Zeit suchten ein paar Kollegen von mir einen Weg um mittels PowerCLI die WWNs und WWPNs eines jeden FC-HBAs in einem ESXi-Host auszulesen.
Dies funktioniert prinzipiell sehr einfach:
1 2 3 4 |
Get-Cluster $cluster | Get-VMHost | Get-VMHostHba -Type FibreChannel | Select VMHost,Device,Status, NodeWorldWideName, PortWorldWideName |
Nun ist es aber so das der zurückgegebene Wert keinesfalls der gewohnten Hexadezimalen Schreibweise entspricht. Um dies nun in das korrekte Format zu konvertieren habe ich mir folgende OneLine-Lösung überlegt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Get-Cluster $cluster | Get-VMHost | Get-VMHostHba -Type FibreChannel | Select VMHost,Device, Status, @{N='WWN';E={ [String] $lstrWWNNHexFormatted = ""; For ($i=0;$i -lt 8;$i++) { $lstrWWNNHexFormatted += "{0}:" -f $(("{0:x}" -f $_.NodeWorldWideName).SubString($i * 2, 2)) } $lstrWWNNHexFormatted = $lstrWWNNHexFormatted.SubString(0, $lstrWWNNHexFormatted.Length - 1); $lstrWWNNHexFormatted }}, @{N='WWPN';E={ [String] $lstrWWNNHexFormatted = ""; For ($i=0;$i -lt 8;$i++) { $lstrWWNNHexFormatted += "{0}:" -f $(("{0:x}" -f $_.PortWorldWideName).SubString($i * 2, 2)) } $lstrWWNNHexFormatted = $lstrWWNNHexFormatted.SubString(0, $lstrWWNNHexFormatted.Length - 1); $lstrWWNNHexFormatted }} | ft -AutoSize |
Dies führt zu folgender schöner Tabelle:
VMHost | Device | Status | WWN | WWPN |
host1 | vmhba2 | online | 12:34:56:78:ab:1a:bb:a5 | 12:34:56:78:ab:1a:bb:a4 |
host1 | vmhba3 | online | 12:34:56:78:ab:1a:bb:a7 | 12:34:56:78:ab:1a:bb:a6 |
host2 | vmhba2 | online | 12:34:56:78:ab:1a:ba:f5 | 12:34:56:78:ab:1a:ba:f4 |
host2 | vmhba3 | online | 12:34:56:78:ab:1a:ba:f7 | 12:34:56:78:ab:1a:ba:f6 |
Die Tabelle lässt sich natürlich nach Belieben weiterwenden. Sei es als Export in einer CSV-Datei, als Text in einer Mail oder schlicht in einem weiteren Scriptteil zur Weiterverarbeitung.