PowerShell「foreach」「ForEach-Object」の根本的な違いとスクリプト例「PowerShell」のループ処理に使える4つの構文【前編】

「PowerShell」のスクリプトでループ処理をしたい場合に、使える構文が幾つかある。主要な構文のうち「foreach」「ForEach-Object」を紹介する。

2022年04月06日 10時00分 公開
[Anthony HowellTechTarget]

関連キーワード

プログラミング | Windows


 「Windows」のコマンド実行ツール「PowerShell」は、IT管理者がシステムを構成したり、タスクを自動化したりするのに活用できる。PowerShellのスクリプト(簡易プログラム)でループ処理を使えば、IT管理者は同じスクリプトを繰り返し記述することなく、タスクを反復実行可能になる。

 PowerShellで利用できるループ処理の構文には幾つかの選択肢がある。本連載は、4種類の主要な構文を紹介する。前編はそのうち2種類を取り上げる。

1.foreach

 「foreach」は、配列(同種のデータの集合)の各要素に対して処理を反復する。あるディレクトリ以下に存在する全てのサブディレクトリを調べて、そのサブディレクトリ内のファイルを一覧するには、foreachを使った以下のようなスクリプトを記述すればよい。

$directories = Get-ChildItem -Directory
foreach ($directory in $directories) {
    Get-ChildItem $directory -File
}

 foreachの後ろには、

  • 配列の各要素を表す変数
  • in
  • 配列

を順番に指定する。変数名には単数形の名詞、配列名には複数形の名詞を使用するのが一般的だ。この記法によって、読みやすく分かりやすいスクリプトを作成できる。

2.ForEach-Object

 「ForEach-Object」はforeachと同じループ処理を実行するが、処理の際に「パイプライン」を使用する。パイプラインはあるコマンドの出力結果を別のコマンドに渡す構文を指し、「|」で表現する。foreachの例と同じ処理をForEach-Objectで実行する場合は、次のように記述する。

Get-ChildItem -Directory | ForEach-Object {Get-ChildItem $_ -File}

 foreachとは異なり、ForEach-Objectのループでは反復処理の実行対象を表すのに「$_」を使用する。PowerShellバージョン3.0以降では「$PSItem」を使うこともできる。

 インタラクティブ(対話的)にコマンドを実行する場合、特に「%」をエイリアス(コマンドの別名)に使用する場合は、基本的にforeachよりもForEach-Objectの方が使いやすい。スクリプトで利用する場合はforeachの方が分かりやすい上に、ネスト(入れ子構造)を利用できる。

TechTarget発 エンジニア虎の巻

米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。

Copyright © ITmedia, Inc. All Rights Reserved.

鬯ョ�ォ�ス�エ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ー鬯ッ�ィ�ス�セ�ス�ス�ス�ケ�ス�ス邵コ�、�つ€鬯ゥ蟷「�ス�「髫エ蜿門セ暦ソス�ス�ス�ク髯キ�エ�ス�・�ス�ス�ス�。鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�、鬯ゥ蟷「�ス�「髫エ荳サ�ス隶捺サゑスソ�ス�ス�ス�ス�ス�ス�ス鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�シ鬯ゥ蟷「�ス�「髫エ荵暦ソス�ス�ス�ス�サ�ス�ス�ス�」�ス�ス�ス�ス�ス�ス�ス�ス

製品資料 ServiceNow Japan合同会社

生成AIで「ローコード開発」を強化するための4つの方法

ビジネスに生成AIを利用するのが当たり前になりつつある中、ローコード開発への活用を模索している組織も少なくない。開発者不足の解消や開発コストの削減など、さまざまな問題を解消するために、生成AIをどう活用すればよいのか。

製品資料 ServiceNow Japan合同会社

「ローコード開発」実践のヒント:AI主導のイノベーションに向けた4つの戦略

急速に変化する顧客ニーズに応えるような適切な製品を継続的に提供するためには、より多くのアプリを生み出す必要があるが、そのための開発者が不足している。そこで注目されているのが、生成AIやローコード開発プラットフォームだ。

製品資料 ServiceNow Japan合同会社

ローコードによるアプリ開発と高度な自動化で成功を収めるためのポイントとは?

あらゆる組織は、従業員と消費者の双方に良質なエクスペリエンスを提供する義務を負っている。アプリ開発と高度な自動化は、この目的を達成するための有効策の1つだが、それぞれを適切に実装できなければ、むしろリスク要因ともなり得る。

製品資料 サイボウズ株式会社

「ERP×ノーコードツール」のアプローチを推進するためのポイントとは?

DXが進み、レガシーシステムからの脱却が喫緊の課題となっている今。「ERP×ノーコードツール」のアプローチで基幹システムの刷新に取り組む企業が増えている。そのアプローチを推進するに当たってのポイントを解説する。

事例 サイボウズ株式会社

ローコード/ノーコード開発ツールで実現する、変化に強い組織の作り方

DXの本質は、デジタル技術を駆使して変化に適応する能力を身につけることにある。その手段の1つとして注目を集めているのが、ローコード/ノーコード開発ツールだ。京王グループなどの事例とともに、その特徴やメリットを紹介する。

鬩幢ス「隴主�蜃ス�ス雜」�ス�ヲ鬩幢ス「隰ィ魑エツ€鬩幢ス「隴趣ス「�ス�ス�ス�シ鬩幢ス「�ス�ァ�ス�ス�ス�ウ鬩幢ス「隴趣ス「�ス�ス�ス�ウ鬩幢ス「隴趣ス「�ス�ソ�ス�ス�ス雜」�ス�ヲ鬩幢ス「隴趣ス「�ス�ソ�ス�スPR

From Informa TechTarget

いまさら聞けない「仮想デスクトップ」と「VDI」の違いとは

いまさら聞けない「仮想デスクトップ」と「VDI」の違いとは
遠隔のクライアント端末から、サーバにあるデスクトップ環境を利用できる仕組みである仮想デスクトップ(仮想PC画面)は便利だが、仕組みが複雑だ。仮想デスクトップの仕組みを基礎から確認しよう。

PowerShell「foreach」「ForEach-Object」の根本的な違いとスクリプト例:「PowerShell」のループ処理に使える4つの構文【前編】 - TechTargetジャパン システム開発 鬮ォ�エ�ス�ス�ス�ス�ス�ー鬯ィ�セ�ス�ケ�ス縺、ツ€鬯ョ�ォ�ス�ェ髯区サゑスソ�ス�ス�ス�ス�コ�ス�ス�ス�ス

TechTarget鬩幢ス「�ス�ァ�ス�ス�ス�ク鬩幢ス「隴趣ス「�ス�ス�ス�」鬩幢ス「隴乗��ス�サ�ス�」�ス雜」�ス�ヲ 鬮ォ�エ�ス�ス�ス�ス�ス�ー鬯ィ�セ�ス�ケ�ス縺、ツ€鬯ョ�ォ�ス�ェ髯区サゑスソ�ス�ス�ス�ス�コ�ス�ス�ス�ス

鬯ゥ蟷「�ス�「髫エ蜿門セ暦ソス�ス�ス�ク髯キ�エ�ス�・�ス�ス�ス�。鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�、鬯ゥ蟷「�ス�「髫エ荳サ�ス隶捺サゑスソ�ス�ス�ス�ス�ス�ス�ス鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�シ鬯ゥ蟷「�ス�「髫エ荵暦ソス�ス�ス�ス�サ�ス�ス�ス�」�ス�ス�ス�ス�ス�ス�ス�ス鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ゥ鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ュ鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ー

2025/05/14 UPDATE

ITmedia マーケティング新着記事

news025.png

「マーケティングオートメーション」 国内売れ筋TOP10(2025年5月)
今週は、マーケティングオートメーション(MA)ツールの売れ筋TOP10を紹介します。

news014.png

「サイト内検索」&「ライブチャット」売れ筋TOP5(2025年4月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。

news046.png

「ECプラットフォーム」売れ筋TOP10(2025年4月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。