【小ネタ】PowershellでHashTableにHashTableを足す
2021-03-29
azblob://2022/11/11/eyecatch/2021-03-29-powershell-hash-add-hash-000.jpg

この記事はなむゆの個人ブログにもマルチポストしてあります。

はじめに

最近Azure Pipelineとその縁でPowershellと仲良しこよしになっているなむゆです。
HashTableを扱うにあたって、HashTableに一つ一つのkeyvalueを追加する方法はどこでも解説されているのですが、HashTableにHashTableを足し合わせる方法についてはそこそこ調べても出てこなかったのでメモ書きです。

HashTableにHashTableを足し合わせる

$aと$bはどちらもHashTable型ですが、HashTableは以下のように + 演算子を使うことで足し合わせることができます。

$a = @{  
    a="name a"  
    b="name b"  
}  
$b =@{  
    c="name c"  
    d="desperately"  
}  

$c= $a+$b  

# 出力  
# Name                           Value  
# ----                           -----  
# d                              desperately  
# a                              name a  
# c                              name c  
# b                              name b  


ただし、キーの値が被っているとエラーとなります。
以下の例だと、c のキーが重複するため、エラーとなります。

$a = @{  
    a="name a"  
    b="name b"  
    c="name c"  
}  
$b =@{  
    c="name c"  
    d="desperately"  
}  

$c= $a+$b  

# 出力  
# 項目は既に追加されています。辞書のキー: 'c'  追加されるキー:'c'  
# 発生場所 行:12 文字:1  
# + $c= $a+$b  
# + ~~~~~~~~~  
#     + CategoryInfo          : OperationStopped: (:) [], ArgumentException  
#     + FullyQualifiedErrorId : System.ArgumentException  

おわりに

HashTableにHashTableを足し合わせる方法についてはそこそこ調べても出てこなかった・・・と思って今調べたら「ハッシュテーブル同士 加算」あたりで色々出てきました。
ドキュメントにも記述にありますね。
「足し合わせる」よりも「加算」の方が言葉として正確でヒットしやすかったのかもしれません。
Powershellの「~について知りたいことのすべて」シリーズにはいつもお世話になっています。

参考