PowerShell制御構文

PowerShellの条件分岐処理

if文

PowerShellにおける条件分岐では「if,elseif,else」を使います。「else if」や「elif」ではありません。


if (条件) {
    実行処理
} elseif (条件) {
    実行処理
} else {
    実行処理
}

一行で記述する場合にも、ifやelseの後に「{ }」を記述する必要があります。


if($val -eq 1){ return 1 }

switch文

PowerShellのswitch文は以下の特徴があります。

  • switch文の条件判定では、一般的な「case」という記述を用いません。
  • ラベルの後ろのは「{ }」を用いてスクリプトブロックで条件文を記述します。
  • フォールスルーがありません。
  • switch文は大文字と小文字を区別しません。
  • switch条件に配列を指定すると配列要素すべてに対してswitch文が実行されます。

switch ($var)
{
  1 {"a"}
  2 {"b"}
  default {"default"}
}

switch文で大文字と小文字を区別するには「-case」オプションを使用します


switch -case ($var)

ワイルドカードによるパターン一致で評価するには「-wildcard」オプションを使用します。


switch -wildcard ($var){
    "t*" {"tで始まる文字列です"}
}

正規表現によるパターン一致で評価するには「-regex」オプションを使用します。


switch -regex ($var){
    "(^#)" {"コメントに対する処理"}
}

PowerShellのループ処理

for文

for文は「初期値,継続条件,加算値」を記述します。


for ($i = 0; $i -lt 5; $i++) {
    実行処理
}

foreach文

配列やハッシュのような要素をひとつずつ取り出すための繰り返し処理です。

「each」ではなく「foreach」です。


foreach ($item in $items) {
    実行処理
}

while文

条件を満たされている限り(trueである限り)処理を繰り返します。


while (条件) {
    実行処理
}

do while文

処理を一度実行した上で、条件を満たされている限り(trueである限り)処理を繰り返します。


do {
    実行処理
} while (条件)

do until文

処理を一度実行した上で、条件が満たされるまで(trueになるまで)、処理を繰り返します。


do {
    実行処理
} until (条件)

PowerShellのジャンプ処理

break

「break」が実行されると、コードブロックを終了して、後続処理へ移動します。


$items = @(5,3,1,7,3,8,0,3,1)
# 要素に0があるまで表示する。
foreach($item in $items){
  if($item -eq 0){ break }
  Write-Host $item
}

continue

「continue」が実行されると、実行フローはループの先頭へ移動し、次の加算値で反復処理を行います。


# 偶数を出力する
for($i = 0; $i -lt 10; $i++){
  if($i % 2){ continue }
  Write-Host $i
}


関連ページ