PowerShell

PowerShellで配列をループ処理する方法

この記事では、PowerShellで配列をループ処理する方法について簡潔に説明します。

foreach構文などを利用して、配列の各要素に対し効率的に処理を施す手法を紹介します。

実際の操作例を交えて、読みやすく実践的な記述方法を理解できる内容です。

配列の基本操作

配列の作成方法

PowerShellでは、配列は簡単に作成できます。

@()を使って複数の値をまとめることができます。

以下のサンプルコードでは、数値の配列を作成して表示しています。

# 数値の配列を作成する例

$array = @(1, 2, 3, 4, 5)

# 配列の中身を出力する

$array
1
2
3
4
5

また、文字列やオブジェクトの配列も同様の方法で作成できます。

配列の要素へのアクセス

配列の要素にはインデックス番号を指定してアクセスすることができます。

インデックスは0から始まるため、最初の要素にアクセスする場合は[0]を使用します。

以下のサンプルコードでは、文字列の配列の最初の要素を取り出して表示しています。

# 文字列の配列を作成

$array = @("apple", "banana", "cherry")

# 先頭要素を取得して出力(配列のインデックスは0からスタート)

$firstElement = $array[0]
Write-Output $firstElement
apple

foreachループによる配列処理

foreach構文の基本

foreach構文を使うことで、配列の各要素を順番に処理することができます。

各ループでは、配列の要素が変数に代入され、その変数を使って処理を実行します。

下記のサンプルコードでは、数値の配列の各要素を取り出して、メッセージと共に表示しています。

# foreachループで配列の各要素を処理する例

$numbers = @(10, 20, 30)
foreach ($num in $numbers) {
    Write-Output "数値: $num"
}
数値: 10
数値: 20
数値: 30

コード例による解説

各要素の処理内容

foreachループを使うと、ループ内で各要素を順に処理できます。

以下のサンプルコードでは、文字列の配列から各要素を取り出し、フルーツ:というメッセージと共に出力しています。

# 各要素を個別に処理する例(文字列の配列)

$fruits = @("orange", "grape", "melon")
foreach ($fruit in $fruits) {
    Write-Output "フルーツ: $fruit"
}
フルーツ: orange
フルーツ: grape
フルーツ: melon

注意すべきポイント

foreachループを使う際は、ループ内で配列自体を変更する場合に注意が必要です。

配列の構造が変わると、予期しない動作になる可能性があります。

下記のコードは変更のリスクがある例です。

実際の処理では、ループ外で必要な変更処理を行うか、別の配列に格納して作業することをお勧めします。

# 注意: ループ内で元の配列に変更を加えると、予期せぬ結果になる場合があります

$items = @("A", "B", "C")
foreach ($item in $items) {

    # 例えば、ここで新しい値を追加するとループ処理に影響が出ます

    Write-Output $item
}
A
B
C

ForEach-Objectを使った配列処理

パイプラインとの連携方法

ForEach-Objectは、パイプラインに流れたオブジェクトに対して処理を実行するためのコマンドレットです。

パイプラインを利用することで、配列の各要素に対して一括で処理を行うことができます。

以下のサンプルコードは、パイプラインで配列を渡し、各要素を出力する例です。

# パイプラインでForEach-Objectを使用して各要素を処理する例

$data = @(100, 200, 300)
$data | ForEach-Object {
    Write-Output "値: $_"
}
値: 100
値: 200
値: 300

実例の解説

実例として、ForEach-Objectを使って配列内の数値を2倍にする処理を行う例です。

コード内にコメントを入れているので、処理内容が理解しやすくなっています。

# 各要素を2倍にする実例

$values = @(5, 10, 15)
$values | ForEach-Object {
    $result = $_ * 2   # 各要素に2倍の計算を行う
    Write-Output "結果: $result"
}
結果: 10
結果: 20
結果: 30

forループによる配列処理の方法

for構文の基本

forループは、ループの開始、終了、インクリメントなどを明示的に制御できるため、細かい制御が必要な場合に適しています。

インデックスに基づいて配列の要素にアクセスすることが可能です。

以下は、文字列の配列を対象にした基本的なforループのサンプルコードです。

# forループを使用して配列内の各要素を処理する例

$letters = @("X", "Y", "Z")
for ($i = 0; $i -lt $letters.Count; $i++) {
    Write-Output "文字: $($letters[$i])"
}
文字: X
文字: Y
文字: Z

foreachとの違いと使い分けポイント

forループは、インデックスの値を明示的に操作するため、特定の範囲や条件に絞って配列の一部だけを処理する場合に便利です。

一方、foreachはシンプルに全体を順次処理する場合に適しています。

以下のサンプルコードは、配列の一部の要素(例えば、2番目から4番目の要素)だけを処理する例です。

# forループで特定の範囲の要素を処理する例

$numbers = @(1, 2, 3, 4, 5)

# インデックス1からインデックス3までの要素(2番目~4番目)を出力

for ($i = 1; $i -le 3; $i++) {
    Write-Output "部分要素: $($numbers[$i])"
}
部分要素: 2
部分要素: 3
部分要素: 4

まとめ

この記事では、PowerShellでの配列作成、要素へのアクセス、foreach、ForEach-Object、forループによる配列処理の基本的な使い方とコード例を通して各ループの特徴を解説しています。

具体的なサンプルを参考にしながら、配列操作の効率的な手法が理解できる内容になっています。

関連記事

Back to top button
目次へ