「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
-
技術文書・技術解説
[アトラシアン株式会社] なぜAIを導入しても効果が出ない? 組織全体で使いこなすための仕組みとは -
製品資料
[プログレス・ソフトウェア・ジャパン株式会社] ネットワーク全体を見える化、フロー分析で実現する広域監視と迅速な異常検知 -
製品資料
[プログレス・ソフトウェア・ジャパン株式会社] SNMPより詳細で、パケット解析より簡単な「トラフィック可視化・分析」の方法 -
製品資料
[プログレス・ソフトウェア・ジャパン株式会社] 重要性を増す“侵入後の可視化” どのように実現すればよいのか? -
市場調査・トレンド
[クラウドストライク合同会社] 回避型攻撃が急速に拡大、連鎖する攻撃を防ぐためのアプローチとは?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
負の遺産ではない! 今こそメインフレームを再評価すべし
-
2
「IoT通信環境の構築・運用」に関するアンケート
-
3
「有線LAN環境」に関するアンケート
-
4
IT製品の導入に関するアンケート「セキュリティ」編
-
5
毎日2時間の“無駄”を生む「紙とExcel」管理 田中精密工業はどう脱却したのか
-
6
【専門家に聞く】表計算の限界を突破するロイヤリティ管理のスマートな手法とは?
-
7
「データストレージの活用方法」に関するアンケート
-
8
「SBOM」はただの目録に過ぎない――サプライチェーン攻撃の盲点と保護策
-
9
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
10
NVIDIA「一強体制」の終わりか データセンターを襲う“電力の壁”
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
「IT史に名を残すシステム障害」8選
-
3
10G回線の真価をフルに享受するには? 導入前にチェックしたいポイント
-
4
SCS評価制度時代の「SASE選定」ガイド
-
5
顧客対応自動化の要点:RAGとデータ連携で“業務で使える生成AI”にする方法
-
6
マンガで解説:情シスの負担を減らす「MDRサービスのインシデント対応」の中身
-
7
「EDR」選定ガイド:比較・検討フェーズで整理すべきポイントを解説
-
8
なぜAIは組織で定着しないのか? 全社展開を阻む「3つの壁」と突破のヒント
-
9
ランサムウェア攻撃“究極の対策”はこれだ
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー