PowerShellコマンドレット虎の巻

Foreach-Object

Foreach-Objectは、オブジェクトを順次処理するコマンドです。

エイリアスforeach、%

解説

パイプラインで渡された各オブジェクトに対してスクリプトブロック内の操作を実行します。
データの処理、変換、フィルタリングなど、様々な場面で使用できます。

構文

(構文)
ForEach-Object [-Process] <scriptblock[]> [<CommonParameters>] ForEach-Object [-MemberName] <string> [<CommonParameters>]
【主要パラメータ】
パラメータ説明
-InputObject オブジェクトパイプラインを使用せずに、直接オブジェクトを指定して処理を行う
-Begin スクリプトブロックループの最初に一度だけ実行するスクリプトブロックを指定する
-Process スクリプトブロック各オブジェクトに対して実行するスクリプトブロックを指定する
-End スクリプトブロックループの最後に一度だけ実行するスクリプトブロックを指定する
-RemainingScripts スクリプトブロック-Processパラメータに指定されたスクリプトブロックの後に実行するスクリプトブロックを指定する
-MemberName メンバー名指定したメンバー名を持つメソッドを各オブジェクトに対して呼び出す
-ArgumentList 引数-MemberNameで指定したメソッドに渡す引数を指定する
-WhatIf実行はせずに実行結果の確認のみ行う
-Confirm実行前に確認メッセージの表示を行う

共通的なパラメータは「共通パラメータ」をご覧ください。

サンプル

配列を回してコンソールに出力する

$arr = @("AAA", "BBB", "CCC) $arr | ForEach-Object{ Write-Host $_ } AAA BBB CCC

1~5をループ処理

1..5 | ForEach-Object { $_ * 2 }

(実行結果)

2 4 6 8 10

ファイルのリストを処理する

Get-ChildItem -Path "D:\test" | ForEach-Object { $_.Name }

プロセスリストをループ処理する

Get-Process | ForEach-Object { "$($_.Name) - $($_.CPU)" }

コマンドのヘルプを表示する

Get-Help Foreach-Object

備考

  • $_はパイプラインで渡された現在のオブジェクトを指します。

関連項目