「PowerShell」のループ処理に使える4つの構文【前編】
PowerShell「foreach」「ForEach-Object」の根本的な違いとスクリプト例
「PowerShell」のスクリプトでループ処理をしたい場合に、使える構文が幾つかある。主要な構文のうち「foreach」「ForEach-Object」を紹介する。
「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
- 配列
を順番に指定する。変数名には単数形の名詞、配列名には複数形の名詞を使用するのが一般的だ。この記法によって、読みやすく分かりやすいスクリプトを作成できる。
併せて読みたいお薦め記事
PowerShellの使い方
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.
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
技術文書・技術解説
[Jamf Japan 合同会社] MDMだけでモバイルセキュリティは十分? 不足する対策を16項目でチェック -
事例
[Wrike Japan 株式会社] 世界的な家電メーカーが実践する「クリエイティブプロセス効率化」の方法とは? -
事例
[Wrike Japan 株式会社] 世界的テクノロジー企業に学ぶ、プロセス標準化とプロジェクト納品自動化の秘訣 -
事例
[Wrike Japan 株式会社] ソニー・ピクチャーズ テレビジョンに学ぶ、次世代サービスデリバリーのヒント -
事例
[Wrike Japan 株式会社] ソミック石川に学ぶ、ICT浸透後に直面した「工数管理」の課題と解決策
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
2
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
3
「有線LAN環境」に関するアンケート
-
4
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
5
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
6
「データストレージの活用方法」に関するアンケート
-
7
「自動化」で「DX」は強制的に進む? そのシンプルな理由
-
8
AWS障害でも補償ゼロの衝撃 サイバー保険で情シスが見落とす「細則の壁」
-
9
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
10
「データを国内に置く」だけでは不十分 情シスが知るべきAI時代の「デジタル主権」
ホワイトペーパーランキング PR
-
1
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
4
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
9
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
10
少額減価償却資産が40万円未満へ拡大、令和8年度税制改正で押さえるべき変更点
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー