WMIを使用して、HBAカードのポートのWWN(ワールドワイドネーム)を調べています。 WWNを取り戻すことはできますが、8バイトの配列として含まれています。簡単に表示できるように、このバイト配列を16進数の16進数の文字列に変換したいと思います。
これは、各番号を独自の行に出力するために使用しているクエリです。これを変換して、8行を1行に結合する方法はありますか?
gwmi -namespace root\wmi -class MSFC_FibrePortNPIVAttributes | select -expand WWPN | foreach { $_.ToString("X2") }
以下はバイトデータだけでテストするために使用できると思いますが、PowerShellはまだ初めてです。
[byte[]] 1,2,3,4,5,6,7,8 | foreach { $_.ToString("X2") }
ここにいくつかの方法があります(他にもあると確信しています):
[byte[]](1,2,3,4,5,6,7,8) | foreach { $string = $string + $_.ToString("X2") }
Write-Output $string
または
-join ([byte[]](1,2,3,4,5,6,7,8) | foreach {$_.ToString("X2") } )
または
([byte[]](1,2,3,4,5,6,7,8) | foreach { $_.ToString("X2") }) -join ""
上記のそれぞれの出力:
0102030405060708
あなたがそれをすることができる1つの方法はそうです:
[System.BitConverter]::ToString([Byte[]](1,2,3,4,5,6,7,8)) -replace "-"
内訳は次のとおりです。
[Byte[]](1,2,3,4,5,6,7,8)
これにより、それぞれが値1から8を含む8つの要素を持つByteArrayが作成されます。
[System.BitConverter]::ToString(<ByteArray type Object>)
これにより、ByteArrayが次のようにダッシュで区切られた文字列に変換されます。
01-02-03-04-05-06-07-08
最後に、
-replace "-"
これにより、ダッシュが削除されます。