(1) Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介
(1-1) ハッシュテーブルとは?
(1-2) ハッシュテーブルの構文
(1-3) ハッシュテーブルの動的な生成~値の取得
(1) Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介
(1-1) ハッシュテーブルとは?
Powershellにおけるデータ構造の一つで、1つ以上のKey(キー)とValue(値)のペアにより構成される事が特徴です。
利点として、スクリプトにて自動でKey-Valueの組み合わせを登録できて、一時的なストレージ代わりになる点が便利です。加えてKey情報があるので、要素に対して「名前指定」でのアクセスが可能になります(※通常の配列では要素のインデックス等を利用するが)
(1-2) ハッシュテーブルの構文
①定義
ハッシュテーブルは「@」マークの後に鍵括弧{ }で表現します。
@{ }
②キーと値の設定
そして{ }の中身にKeyとValueの値を代入していきます。キー(Key)は一意な値である必要があり(重複不可)、Key-Valueの間はセミコロン「;」で区切ります。
@{ 'key1' = 'value1';'key2' = 'value2' }
③変数への代入
多くの場合は次の例のように、変数に代入して利用します。変数名を書くと、その中身をコンソールに出力する事ができます(2行目の「$hash」)
$hash = @{ 'key1' = 'value1';'key2' = 'value2' } $hash
(図121)
(1-3) ハッシュテーブルの動的な生成~値の取得
値を取得する際は下記のサンプルのように「foreach」などを使ってループ処理で各HashTable要素にアクセスします。
(サンプルプログラム)
#(1)空のHashTable変数を定義 $hash = $null #(2)空のHashTableを代入 $hash = @{} #(3)HashTable格納用のデータを集める $service = get-service -Unique #(4)foreachステートメントを使って、集めた要素内をループ foreach ($s in $service) { #(5)キー(Key)と値(Value)の追加 $s.name +" "+ $s.status #$hash.add($p.name,$p.id) }
(サンプルプログラム解説)
(1)空のHashTable変数を定義&(2)空のHashTableを代入
このプログラムを繰り返し実行するケース等で、初期化をしないとグローバル変数の値は残り続けます。それを防ぐために最初に「$null」による初期化をしています。
(3)HashTable格納用のデータを集める
get-serviceコマンドレットでサービスの一覧を取得しています。またHastTableはキー情報が一意である必要があるため、Uniqueを指定して一意な結果を返すようにしています。
(4)foreachステートメントを使って、集めた要素内をループ
foreachコマンドを使ってHashTableの各要素をループします。
(図131)サンプルプログラム実行結果