PowerShellスクリプトで見かける1..10の謎を解明:foreachとForEach-Object

Windows
記事内に広告が含まれています。

PowerShellとは?その基本概念を解説

PowerShellはWindowsに標準搭載されているスクリプト言語兼シェルです。
コマンドプロンプトよりも高機能で、オブジェクト指向のデータ処理ができるのが特徴です。
単なるテキスト出力ではなく、オブジェクト(構造化データ)として扱えるため、管理作業の自動化に最適です。

foreach文の基本構文と実行方法

foreachは配列などの要素を順番に取り出して処理するループ構文です。

foreach ($i in 1..10) {
    Write-Output "現在の値は $i です"
}

出力結果:

現在の値は 1 です
現在の値は 2 です
...
現在の値は 10 です

この1..10は、1から10までの整数を生成する範囲演算子です。


PowerShellにおける配列とオブジェクトの扱い方

配列とは?PowerShellでの定義方法

配列は複数のデータをまとめて扱うためのものです。
PowerShellでは簡単に次のように定義できます。

$numbers = 1..10

これで $numbers は10個の要素を持つ配列になります。

オブジェクトの取得と操作の基本

PowerShellでは、数値や文字列もオブジェクトとして扱われます。
そのため、ループ中でメソッドを呼び出したり、条件分岐を加えたりできます。

foreach ($n in $numbers) {
    if ($n % 2 -eq 0) {
        Write-Output "$n は偶数です"
    }
}

ForEach-Objectコマンドレットの活用法

ForEach-Objectとは?その基本と利点

ForEach-Objectパイプライン処理専用のループコマンドレットです。
同じ「foreach」でも、構文が少し異なります。

1..10 | ForEach-Object { Write-Output "値は $_ です" }

ここでの$_は、現在処理中の要素を指します。
一行で書けるため、短いスクリプトやパイプ処理に向いています。

並列処理の例(PowerShell 7以降)

PowerShell 7以降では、ForEach-Object -Parallelが利用できます。
これを使えば複数の処理を同時に実行でき、時間を短縮できます。

1..10 | ForEach-Object -Parallel {
    Start-Sleep -Seconds 1
    "完了:$_"
}

この例では1秒スリープする処理を同時並行で実行します。


応用例:CSVファイルの処理

PowerShellではforeachを使ってファイルの各行を処理することも簡単です。

$data = Import-Csv "users.csv"
foreach ($user in $data) {
    Write-Output "ユーザー名: $($user.Name)、メール: $($user.Email)"
}

データベースのようにCSVを扱えるのもPowerShellの強みです。


まとめ:foreachを使いこなすと時間が劇的に短縮

PowerShellでforeach ($i in 1..10)を書くのはシンプルですが、
実はバッチ処理・ログ解析・ファイル操作などの基礎になる非常に重要な構文です。

  • 配列のループなら foreach
  • パイプライン処理なら ForEach-Object
  • 大量データを高速処理したいなら -Parallel

を使い分けることで、スクリプトの効率が大きく向上します。

PowerShellとは?その基本概念を解説

PowerShellはWindowsに標準搭載されているスクリプト言語兼シェルです。
コマンドプロンプトよりも高機能で、オブジェクト指向のデータ処理ができるのが特徴です。
単なるテキスト出力ではなく、オブジェクト(構造化データ)として扱えるため、管理作業の自動化に最適です。

foreach文の基本構文と実行方法

foreachは配列などの要素を順番に取り出して処理するループ構文です。

foreach ($i in 1..10) {
    Write-Output "現在の値は $i です"
}

出力結果:

現在の値は 1 です
現在の値は 2 です
...
現在の値は 10 です

この1..10は、1から10までの整数を生成する範囲演算子です。


PowerShellにおける配列とオブジェクトの扱い方

配列とは?PowerShellでの定義方法

配列は複数のデータをまとめて扱うためのものです。
PowerShellでは簡単に次のように定義できます。

$numbers = 1..10

これで $numbers は10個の要素を持つ配列になります。

オブジェクトの取得と操作の基本

PowerShellでは、数値や文字列もオブジェクトとして扱われます。
そのため、ループ中でメソッドを呼び出したり、条件分岐を加えたりできます。

foreach ($n in $numbers) {
    if ($n % 2 -eq 0) {
        Write-Output "$n は偶数です"
    }
}

ForEach-Objectコマンドレットの活用法

ForEach-Objectとは?その基本と利点

ForEach-Objectパイプライン処理専用のループコマンドレットです。
同じ「foreach」でも、構文が少し異なります。

1..10 | ForEach-Object { Write-Output "値は $_ です" }

ここでの$_は、現在処理中の要素を指します。
一行で書けるため、短いスクリプトやパイプ処理に向いています。

並列処理の例(PowerShell 7以降)

PowerShell 7以降では、ForEach-Object -Parallelが利用できます。
これを使えば複数の処理を同時に実行でき、時間を短縮できます。

1..10 | ForEach-Object -Parallel {
    Start-Sleep -Seconds 1
    "完了:$_"
}

この例では1秒スリープする処理を同時並行で実行します。


応用例:CSVファイルの処理

PowerShellではforeachを使ってファイルの各行を処理することも簡単です。

$data = Import-Csv "users.csv"
foreach ($user in $data) {
    Write-Output "ユーザー名: $($user.Name)、メール: $($user.Email)"
}

データベースのようにCSVを扱えるのもPowerShellの強みです。


まとめ:foreachを使いこなすと時間が劇的に短縮

PowerShellでforeach ($i in 1..10)を書くのはシンプルですが、
実はバッチ処理・ログ解析・ファイル操作などの基礎になる非常に重要な構文です。

  • 配列のループなら foreach
  • パイプライン処理なら ForEach-Object
  • 大量データを高速処理したいなら -Parallel

を使い分けることで、スクリプトの効率が大きく向上します。

コメント

タイトルとURLをコピーしました