PowerShellのForループをマスターする:コマンドの繰り返し実行を簡単にする方法
Forループは、あらゆるプログラミング言語において最も価値のあるツールのひとつであり、Microsoft PowerShellも例外ではありません。他のループ構文でもコマンドの繰り返しは可能ですが、Forループはおそらく最もシンプルで直感的に使える構文です。
配列の要素を順番に処理することから、関数を決められた回数だけ実行することまで、このツールで実現できることは多岐にわたります。本記事では、PowerShellでForループを使う方法をチュートリアル形式で解説します。
PowerShellにおけるForループの用途とは?
コマンドプロンプトと異なり、PowerShellは完全なスクリプティング環境です。つまり、コマンドを手動で入力する代わりに、再利用可能なPowerShellスクリプトを作成してタスクを自動化できます。そして、そのようなモジュール(スクリプト)を書くうえで鍵となるのがForループです。
Forステートメントは、指定した回数だけスクリプトブロックを繰り返し実行しながら、進行状況を追跡するための変数を更新していきます。この仕組みにより、さまざまな興味深いシナリオでループを活用できるのです。
例えば、数値の連番を生成したり、素数を判定したり、カウントダウンタイマーを表示したりすることが可能です。より実用的な使い道としては、オブジェクトの配列を反復処理して、各要素に対して何らかのアクションを実行するというものがあります。
PowerShellにおけるForループの構文
Forループは、Windows PowerShellでも他のプログラミング言語と同じように動作します。追跡用変数を初期化する式、変数の値をテストする条件式、そして変数を更新する式が、「For」に続く括弧内にセミコロンで区切られて記述されます。その後、波括弧({ })で囲まれたステートメントリスト(処理本体)が続きます。
For (初期化; 条件; 更新)
{
スクリプトブロック
}
PowerShellスクリプトでForループを使う方法
Forループの使い方はとてもシンプルです。少し内容の異なる同じステップを繰り返したい場面に遭遇したら、それをForループに入れるのが基本です。
例えば、変数 $n に格納された数値までの自然数の合計を求めるコードスニペットが必要だとしましょう。以下が基本的なForループの使用例です。
$n = 10
$sum = 0
For ($i = 1 ; $i -le $n ; $i++)
{
$sum = $sum + $i
}
"$n までの自然数の合計は $sum です"
Forループで配列にアクセスする
数値の連番生成は、多くの人がPowerShellを使う主な目的ではないでしょう。より一般的な使い方は、配列の反復処理です。
例えば、7つの要素を持つ配列 $week があるとします。次の例のように、シンプルなForループを使えば、配列に含まれる曜日のリストを出力できます。
For ($i = 0 ; $i -lt $week.Length ; $i++)
{
$week[$i]
}
ForEachループで配列をすばやく反復処理する
Forループのもうひとつの形式がForEachステートメントです。こちらのバージョンは、PowerShell配列の中身を順番に取り出して個別に処理する作業を簡略化します。先ほどのコードスニペットは、例えば次のように書き換えられます。
Foreach ($day in $week)
{
$day
}
さらに複雑なオブジェクトを扱う場合には、Foreach-Object コマンドレットを使用して、任意のPowerShellコマンドの出力内容に対してアクションを実行することもできます。
Forループは他の種類のループと何が違うのか?
Forループは、利用できる唯一のループステートメントではありません。ほとんどのプログラミング言語と同様に、PowerShellには複数の種類のループが用意されています。
While ループ
最もシンプルなのはWhileループです。条件式とスクリプトブロックだけで構成され、テスト式がtrueと評価される限りループが実行され続けます。ただし、条件式が最初に評価されるため、コードが一度も実行されない可能性や、無限ループに陥る可能性があります。
While (条件)
{
スクリプトブロック
}
Do-While ループ
条件式がfalseと評価される場合であっても、少なくとも1回は実行される必要があるスクリプトを書く場合は、Do-Whileループを使いましょう。Whileループとの唯一の違いは、コマンドブロックが条件式の前に置かれる点です。つまり、初回のテスト式の評価前に必ずコードが実行されます。
Do {
スクリプトブロック
}
While (条件)
Do-Until ループ
この形式のもうひとつのバリエーションがDo-Untilです。基本的には、コードブロックを実行し、テスト式がtrueになるまで繰り返します。これはDo-Whileループの逆の動作です。ただし、標準的なDo-Whileループの条件を変更すれば同じことが実現できるため、特に便利というわけではありません。
Do {
スクリプトブロック
}
Until (条件)
Forループが優れている理由
これら以外のループ構造の問題点は、初期値や更新ステートメントが含まれていないことです。ループの外側で変数を作成し、ループのパスごとにそれをインクリメント(またはデクリメント)することを、自分で覚えておかなければなりません。
予想通り、プログラマーはこのステップを忘れがちで、その結果、意図どおりに動作しないスクリプトができてしまいます。これでは貴重なデバッグ時間を浪費することになります。
Forループは、開始の括弧内に初期化式とインクリメント式を必ず記述する必要があるため、この問題を回避できます。その結果、よりクリーンで堅牢なスクリプトにつながります。
PowerShellでForループを使うべき場面は?
PowerShellの醍醐味は、自動化のためのスクリプト作成にあります。そして、それを実現するうえでおそらく最も有用なツールこそがForループです。コピーアンドペーストの繰り返し操作の多くを、よりコンパクトでエレガントなスクリプトに置き換えられます。
このループの最も一般的な機能は、配列を1要素ずつ反復処理することです。さらに簡潔なスクリプトを目指すなら、ForEachループの活用も検討してみてください。また、数値の連番を生成するためにForループを使うこともできますが、これはあまり必要とされる場面はないかもしれません。
Forループは、ループに不可欠なすべての機能をパラメータ部分に組み込むことで、ステートメントの書き忘れによるエラーを防ぎます。この特徴により、一連のコマンドを繰り返し実行したいあらゆるシナリオにおいて、Forループは欠かせない存在となっているのです。
-
理想のドメイン名を購入するためのステップバイステップ完全ガイド
ドメイン名はウェブサイトの心臓部です。読者がサイトにたどり着くための入り口となるだけでなく、検索エンジンの結果にも影響を与えます。例えばファンサイトであれば、EldenRing.comというドメインとEldenRingFans.comでは、集められるアクセス数に大きな差が生まれるでしょう。 ドメイン名の購入にはいくつかの手順がありますが、一度取得してしまえば、更新料(通常は年額)を払い続ける限り、好きなだけ長く保有できます。特に価値の高いドメイン名を入手できれば、後年、数百ドルから数千ドルで買い取ってくれる人に転売することも可能です。 ドメイン名とは? インターネットは、無数のドメイン名の集
-
Google Fitの使い方を徹底解説!血圧・体重・ワークアウトの記録方法
健康でいたいと誰もが思っていても、「時間がない」「活動量の記録方法がわからない」といった言い訳をして、なかなか実行に移せないのが現実です。そんなときこそ、スマートフォンで使えるヘルスケアアプリを活用しましょう。 数ある健康管理アプリの中でも、使い方を知らないせいで見過ごされがちなのが「Google Fit」です。 この記事では、Google Fitの仕組みから、血圧・体重・ワークアウトの記録方法、活動量の測定方法、記録の確認方法、設定の管理方法まで、わかりやすく解説します。 Google Fitとは?基本情報と使い方 Google Fitは、GoogleがAndroidおよびWear OS向け