[PowerShell] 連想配列をソートしてforeachで一個づつ取り出す
PowerShell で連想配列を用いた時のソート&foreach のサンプルがなかなか探せなかったのでメモします
とある連想配列
PS C:\> $tbl = @{
>> k00 = "orange";
>> k01 = "peach";
>> k02 = "apple"
>> }
出力は簡単
PS C:\> $tbl
Name Value
---- -----
k01 peach
k02 apple
k00 orange
ソートの出力も簡単
PS C:\> $tbl.GetEnumerator() | Sort-Object Value
Name Value
---- -----
k02 apple
k00 orange
k01 peach
# もしくは
PS C:\> $tbl.GetEnumerator() | sort Value
Name Value
---- -----
k02 apple
k00 orange
k01 peach
これを一つづつ取り出して処理したい
単に foreach で取り出すとき
PS C:\> foreach( $k in $tbl.Keys ){
>> Write-Output $k
>> Write-Output $tbl[ $k ]
>> Write-Output '-----'
>> }
k01
peach
-----
k02
apple
-----
k00
orange
-----
さらにソートして foreach で取り出すとき
PS C:\> $tbl.GetEnumerator() | sort Value |
>> ForEach-Object{
>> Write-Output $_.Name
>> Write-Output $_.Value
>> Write-Output '-----'
>> }
k02
apple
-----
k00
orange
-----
k01
peach
-----
ForEach-Object を使いました ただの foreach() でも出来ると思うんですけど、私的用途が満たせたので、これ以上は調べてないです
検索で、「powershell foreach ソート -perl」 などで検索しても、日本語の情報があまり出てこなかったので、参考になれば幸いです(^^)