今回はpowershellで条件分岐を使用する方法をご紹介します。
目次
条件分岐の種類
以下表を参照下さい。
No. | 演算子 | 説明 |
---|---|---|
1 | -eq | 等しい |
2 | -ne | 等しくない |
3 | -gt | より大きい |
4 | -ge | 以上 |
5 | -lt | より小さい |
6 | -le | 以下 |
7 | -like | ワイルドカードによる比較 |
8 | -notlike | ワイルドカードによる比較 |
9 | -match | 正規表現による比較 |
10 | -notmatch | 正規表現による比較 |
ワイルドカードパターン
No. | ワイルドカード | 説明 |
---|---|---|
1 | * | 0個以上の任意の文字に一致 |
2 | ? | 任意の1文字に一致 |
3 | [a-z] | 連続する文字に一致(左の例の場合はa-zの中の1文字) |
4 | [abc] | abcのうち1文字に一致 |
それでは使用方法です。
構文
if文書き方 if ~ elseif ~ else
eqを使用した単一比較の場合
$x = 555 if($x -eq 555){ Write-Output '正しいです。' }else{ Write-Output '正しくありまえん。' }
$x = 555 if($x -eq 556){ Write-Output '正しいです。' }else{ Write-Output '正しくありません。' }
elseifブロックを使って多岐分岐
$x = 555 if($x -eq 555){ Write-Output '変数は555です。' }elseif($x -ge 556){ Write-Output '変数は556以上です。' }else{ Write-Output '変数は554以下です。' }
文字列の比較の場合
$b = "hoge" if($b -eq "hoge"){ Write-Output '正しい' }else{ Write-Output '正しくない' }
ワイルドカードを用いた比較
$c = "hoge123" if($c -like "hoge*"){ Write-Output '正しい' }else{ Write-Output '正しくない' }
matchを用いた比較 簡単な例
右の文字列が左の文字列に含まれる場合、True
#結果TRUEとなる if("hogawa" -match "ogawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' } #結果TRUEとならない if("hogawa" -match "ogawn"){ Write-Output '正しい' }else{ Write-Output '正しくない' }
matchを用いた比較 正規表現
文字のグループや範囲を角かっこで囲んで含めることもできます。
たとえば、[abo] は、角かっこの中に含まれているいずれかの文字 (a、b、oのいずれか) に一致することを
意味します。
#結果TRUEとなる if("hogawa" -match "h[abo]gawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' } #結果TRUEとならない if("hogawa" -match "h[123]gawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' }
[a-zA-Z] は、a~zまたはA~Zの任意の文字に一致するとTRUEとなります。
#結果TRUEとなる if("hogawa" -match "h[a-z]gawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' } if("h0gawa" -match "h[0-9]gawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' } #結果TRUEとならない if("hogawa" -match "h[1-9]gawa"){ Write-Output '正しい' }else{ Write-Output '正しくない' }