PowerShell で配列、ハッシュテーブル、辞書を作成する方法
- PowerShell での配列の作成
- PowerShell におけるハッシュテーブルの操作
- PowerShell での順序付き辞書の作成
- ハッシュテーブルと順序付き辞書:主要な違い
- 実世界での使用ケース
- 結論
- よくある質問(FAQ)

PowerShell は、データを効率的に格納および操作するためのさまざまなデータ構造を提供します。配列、ハッシュテーブル、および順序付き辞書は、スクリプトや自動化タスクにおけるさまざまなデータコレクションの取り扱いを助ける基本的な構造です。
これらのデータ構造を使う方法を理解することで、PowerShell スクリプトにおけるより良い組織化、効率的な取得、そして構造化されたデータ管理が可能になります。このガイドでは、次のことを探求します。
- PowerShell での配列の作成と操作
- キーと値のストレージにハッシュテーブルを使用する
- データの順序を保持するために順序付き辞書を使う
- ハッシュテーブルと順序付き辞書を比較する
- 各構造の実世界での使用ケースを実装する
このチュートリアルの終わりまでには、PowerShell でこれらのデータ構造を扱う方法について確固たる理解を得ることができます。
PowerShell での配列の作成
PowerShell における配列とは?
PowerShell における配列は、単一の変数に格納された複数の値のコレクションです。配列を使用すると、データのリストを効率的に格納および操作できます。
@()
を使用した配列の宣言
PowerShell で配列を初期化する正しい方法は、@()
構文を使用することです。次のようにして、3つの文字列要素を持つ配列を作成できます。
$data = @('apple', 'ball', 'cat')
出力:
apple
ball
cat
空の配列の作成
後で埋める空の配列が必要な場合は、次のように宣言します。
$data = @()
配列のデータ型を取得する
配列の型をチェックするには、.GetType()
メソッドを使用します。
$data.GetType()
出力:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
配列内の要素にアクセスする
配列はゼロインデックスであり、最初のアイテムはインデックス [0]
にあります。
$data[0] # Retrieves the first item
出力:
apple
配列の最後の要素に動的にアクセスするには、次を使用します。
$data[-1]
出力:
cat
配列にアイテムを追加する
PowerShell の配列は不変であるため、Python や JavaScript のように直接アイテムを追加することはできません。代わりに、追加のアイテムを含む新しい配列を作成する必要があります。
$data += 'dog'
出力:
apple
ball
cat
dog
配列からアイテムを削除する
アイテムを削除するには、配列のフィルタリングを使用します。
$data = $data | Where-Object { $_ -ne 'ball' }
出力:
apple
cat
dog
PowerShell におけるハッシュテーブルの操作
ハッシュテーブルとは?
ハッシュテーブルは、ユニークなキーを使用して値を効率的に取得できるキーと値のストレージ構造です。ハッシュテーブルは辞書または連想配列とも呼ばれます。
ハッシュテーブルの作成
PowerShell でハッシュテーブルを宣言するには、@{}
構文を使用します。
$hash = @{Fruit = "Apple"; Color = "Red"; Count = 5 }
ハッシュテーブルの内容を表示する
$hash
出力:
Name Value
---- -----
Fruit Apple
Color Red
Count 5
ハッシュテーブルの値にアクセスする
キーを使用して値にアクセスできます。
$hash['Color']
出力:
Red
代わりに、ドット表記を使用することもできます。
$hash.Count
出力:
5
ハッシュテーブルでのアイテムの追加と削除
新しいキーと値のペアを追加する
$hash['Shape'] = 'Round'
キーと値のペアを削除する
$hash.Remove('Color')
PowerShell での順序付き辞書の作成
なぜ順序付き辞書を使用するのか?
ハッシュテーブルは挿入順序を保持しませんが、順序付き辞書は保持します。これはデータの順序が重要な場合に便利です。
順序付き辞書の宣言
[ordered]
属性を使用します。
$dict = [ordered]@{Fruit = "Apple"; Color = "Red"; Count = 5 }
順序付き辞書の要素にアクセスする
$dict['Fruit']
出力:
Apple
順序を維持する
通常のハッシュテーブルを何度も印刷すると、順序が変わる可能性があります。しかし、順序付き辞書では、順序は一貫して保たれます。
$dict
出力:
Name Value
---- -----
Fruit Apple
Color Red
Count 5
ハッシュテーブルと順序付き辞書:主要な違い
特徴 | ハッシュテーブル | 順序付き辞書 |
---|---|---|
順序を維持するか? | ❌ いいえ | ✅ はい |
アクセス速度 | ✅ 高速 | ✅ 高速 |
最適な用途 | ランダムアクセスデータ | キーの順序を保持する |
実世界での使用ケース
使用ケース 1: ユーザー情報の格納(順序付き辞書の例)
$user = [ordered]@{
Name = "John Doe"
Email = "johndoe@example.com"
Role = "Admin"
}
使用ケース 2: 単語の出現回数をカウントする(ハッシュテーブルの例)
$text = "apple banana apple orange apple banana"
$wordCount = @{}
$text.Split() | ForEach-Object {
if ($wordCount.ContainsKey($_)) {
$wordCount[$_] += 1
} else {
$wordCount[$_] = 1
}
}
$wordCount
出力:
Name Value
---- -----
apple 3
banana 2
orange 1
結論
PowerShell は、データを効率的に格納および操作するための配列、ハッシュテーブル、順序付き辞書を提供します。
- 値のリストを扱うときは配列(
@()
)を使用します。 - 順序の制約がないキーと値のストレージにはハッシュテーブル(
@{}
)を使用します。 - 挿入順序を保持する必要がある場合は、順序付き辞書(
[ordered]@{}
)を使用します。
これらのデータ構造をマスターすることで、PowerShell でのスクリプト作成の効率と自動化機能が向上します。🚀
よくある質問(FAQ)
PowerShell におけるハッシュテーブルと辞書の違いは何ですか?
PowerShell では、ハッシュテーブルと辞書はしばしば同じ意味で使われます。ただし、辞書は.NET フレームワークの一部(System.Collections.Hashtable
)であるのに対し、PowerShell のハッシュテーブル(@{}
)は組み込みであり、PowerShell スクリプティングに最適化されています。
PowerShell の配列にアイテムを追加または削除するにはどうすればよいですか?
配列は PowerShell では不変であるため、直接修正することはできません。代わりに、次のようにします。
- アイテムを追加する:
$array += 'newItem'
- アイテムを削除する:
$array = $array | Where-Object { $_ -ne 'itemToRemove' }
PowerShell でハッシュテーブルをソートできますか?
はい、順序付き辞書([ordered]@{}
)を使用するか、次を使用してハッシュテーブルを順序付き形式に変換できます。
$sortedHash = $hash.GetEnumerator() | Sort-Object Name
$sortedHash
これにより、キーがアルファベット順に表示されます。