スポンサーリンク

【PowerShell】For文とIf文(ループ処理と分岐処理)

記事内に広告が含まれています。

PowerShell は Windows 環境でのスクリプト作成に広く使用される便利なツールです。

プログラムの基本であるループ処理と分岐処理について、サンプルコードとあわせて記載していきます。

スポンサーリンク

分岐処理

If-Else

分岐処理は特定の条件に基づいて異なるアクションを実行するために使用されます。ifelseifelse ステートメントを使用して、条件分岐を行います。

# 条件による分岐処理の例
$number = 10

if ($number -gt 10) {
    Write-Host "$number is greater than 10."
} elseif ($number -eq 10) {
    Write-Host "$number is equal to 10."
} else {
    Write-Host "$number is less than 10."
}

PowerShell で使用される -gt-eq は、比較演算子です。これらの演算子は条件式で使われ、特定の条件が真か偽かを評価するのに役立ちます。

  • -gt は “Greater Than”(より大きい)の略で、左側の値が右側の値より大きい場合に True を返します。
  • -eq は “Equal”(等しい)の略で、二つの値が等しい場合に True を返します。

Switch

Switch は、一連の値を評価し、一致するケースに基づいて異なるアクションを実行することができます。

基本的な使用方法

基本的な Switch ステートメントは次のように記述されます。

$color = '赤'

Switch ($color) {
    '赤' { Write-Host '色は赤です。' }
    '青' { Write-Host '色は青です。' }
    '緑' { Write-Host '色は緑です。' }
    default { Write-Host '色が識別されません。' }
}

$color 変数によって与えられた値に応じて異なるメッセージが表示されます。

値が ‘赤’、’青’、’緑’ のいずれかであれば、対応するメッセージが表示されます。一致するものがない場合は default ケースが実行されます。

複数の値に対する一致

一つのケースで複数の値を評価することもできます。これには、カンマで値を区切ります。

$weather = '晴れ'

Switch ($weather) {
    '晴れ', '曇り' { Write-Host '外出しやすい天気です。' }
    '雨', '雪' { Write-Host '屋内で過ごすのがおすすめです。' }
    default { Write-Host '天気が不確かです。' }
}

$weather が ‘晴れ’ または ‘曇り’ の場合に同じアクションを実行します。同様に、’雨’ や ‘雪’ でも同じメッセージが表示されます。

スクリプトブロックと条件評価

Switch ステートメントでは、複雑な条件やスクリプトブロックも利用できます。例えば、文字列のパターンマッチングを行うことができます。

$fileName = 'report.doc'

Switch -Regex ($fileName) {
    '\.doc$' { Write-Host 'ファイルはドキュメントです。' }
    '\.xls$' { Write-Host 'ファイルはスプレッドシートです。' }
    default { Write-Host '未知のファイルタイプです。' }
}

-Regex オプションを使用して、ファイル名が特定のパターンに一致するかどうかを判定しています。これにより、様々なファイルタイプを効率的に識別できます。

スポンサーリンク

ループ処理

PowerShell では、foreachforwhiledo-while など、さまざまなループ処理がサポートされています。

For ループ

for ループは、指定された回数だけコードブロックを繰り返し実行します。

# for ループの例
for ($i = 1; $i -le 5; $i++) {
    Write-Host "Iteration $i"
}

Foreach ループ

foreach ループはコレクションの各要素に対してコードブロックを実行します。

# foreach ループの例
$colors = "red", "green", "blue"

foreach ($color in $colors) {
    Write-Host "Color: $color"
}

While ループ

while ループは、条件が真の間、コードブロックを繰り返し実行します。

# while ループの例
$count = 1

while ($count -le 5) {
    Write-Host "Count: $count"
    $count++
}

Do-While ループ

do-while ループは、最低一回はコードブロックを実行し、その後条件が真の間繰り返します。

# do-while ループの例
$count = 6

do {
    Write-Host "Count: $count"
    $count++
} while ($count -le 5)

Break と Continue を使用したループの制御

ループ内で特定の条件を満たした場合に早期にループを抜ける(Break)、または次の繰り返しにスキップする(Continue)方法を記載します。

Break の使用例

以下の例では、$i が 5 になったときに Break ステートメントが実行され、ループから抜け出します。

for ($i = 1; $i -le 10; $i++) {
    if ($i -eq 5) {
        Write-Host "ループを抜けます。"
        Break
    }
    Write-Host "ループ中: $i"
}
Continue の使用例

以下の例では、$i が偶数の場合、Continue ステートメントが実行され、その繰り返しの残りの部分はスキップされます。結果として、奇数だけが表示されます。

for ($i = 1; $i -le 10; $i++) {
    if ($i % 2 -eq 0) {
        Continue
    }
    Write-Host "奇数: $i"
}
スポンサーリンク
Windows
著者SNS
タイトルとURLをコピーしました