PowerShell で配列、ハッシュテーブル、辞書を作成する方法

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

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

これにより、キーがアルファベット順に表示されます。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - PowerShell Array