編集メモ
重要
Windows PowerShell 言語仕様 3.0 は、2012 年 12 月に公開され、Windows PowerShell 3.0 に基づいています。 この仕様では、PowerShell の現在の状態は反映されません。 現在の状態を反映するようにこのドキュメントを更新する予定はありません。 このドキュメントは、履歴参照のためにここに示されています。
仕様文書は、Microsoft ダウンロード センターから Microsoft Word 文書として入手できます。https://www.microsoft.com/download/details.aspx?id=36389 Word 文書は、Microsoft Learn でプレゼンテーション用に変換されています。 変換中に、Docs プラットフォームの書式設定に対応するために、いくつかの編集の変更が行われました。 一部の入力ミスと軽微なエラーが修正されました。
構文:
ヒント
構文定義の ~opt~
表記は、構文エンティティが構文で省略可能であることを示します。
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
10.1 概要
型 Hashtable は、キー によってインデックスされた際に、値を効率的に取得できるキーと値のペア オブジェクトのコレクションを表します。 各キーと値のペアは 要素であり、実装で定義されたオブジェクト型に格納されます。
要素のキーを null 値にすることはできません。 キーまたは値の種類に制限はありません。 重複するキーはサポートされていません。
キーと値のペア オブジェクトを指定すると、インスタンス プロパティ Key と Value をそれぞれ使用して、キーと関連する値を取得できます。
1 つ以上のキーを指定すると、対応する値に Hashtable 添字演算子 []
(§7.1.4.3) を使用してアクセスできます。
すべてのハッシュテーブルの型は Hashtable
です (§4.3.3)。
Keys によって返されるコレクション内のキーの順序は指定されていません。ただし、値によって返されるコレクション内の関連付けられている値と同じ順序です。
ハッシュテーブルに関連するいくつかの例を次に示します。
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
10.2 ハッシュテーブルの作成
10.3 Hashtable 要素の追加と削除
要素を Hashtable
に追加するには、存在しないキー名に値を割り当てるか、存在しないキー名を使用する添字 (§7.1.4.3) に値を割り当てます (§7.11.1)。 要素を削除するには、Remove メソッドを使用する必要があります。 例えば
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 ハッシュテーブル連結
ハッシュテーブルは、+
演算子と +=
演算子を使用して連結でき、どちらも新しい Hashtable
が作成されます。 既存のハッシュテーブルは変更されません。 詳細については、§7.7.4
10.5 参照型としてのハッシュテーブル
Hashtable
は参照型であるため、Hashtable
の割り当てには浅いコピーが含まれます。つまり、割り当てられた変数は同じ Hashtable
を参照します。Hashtable
のコピーは作成されません。 例えば
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 ハッシュテーブルの列挙
Hashtable
内のすべてのペアを処理するには、Keys プロパティを使ってキーの一覧を配列として取得し、次に、その配列の要素を列挙し、[値] プロパティまたは添字を使って関連付けられた値を取得します。次に例を示します。
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}
PowerShell