システムエンジニアXの「プログラミング以外」の話 50代会社員SEのお仕事・副業・システム運用の経験談

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

公開:
更新:

※本記事には広告を含みます。

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

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

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。

OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。 また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。

この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。 すべての操作は自己責任で行ってください。

最後までお読みいただきありがとうございました。
またお会いしましょう!

著者のおすすめ教材 & note実践記事

公式教材 豪華4大特典付き

PowerShell実務スクリプト50選

AD・Windows運用・障害対応をコマンド一発で自動化する現役SEの実務スクリプト集。

最新note 毎日定時で帰る現場ハック

ググっても出ない実務テク20選

社内SE現場の地味で細かすぎる面倒作業を一撃で解消する実践テクニック集。