トッカンソフトウェア

PowerShell 条件、ループ関連



PowerShellの条件、ループ関連をまとめます。

IF文

				
$aaa = 1

if($aaa -eq 0){
    echo "zero"
}elseif($aaa -eq 1){
    echo "one"
}else{
    echo "etc"
}


			
演算子 概要
-eq 等しい(==)。大文字、小文字を意識しない
意識する場合は-ceqとする
-ne 等しくない(!=)
-gt より大きい(>)
-ge 以上(>=)
-lt 未満(<)
-le 以下(<=)
-like あいまい検索
ワイルドカード:*
一文字:?
否定の場合は -notlike とする
-match 正規表現
否定の場合は -notmatch とする
				
$aaa = -2

if (($aaa -gt -1) -and ($aaa -lt 1 )) {
    Write-Output "zero"
}
elseif (($aaa -eq -1) -or ($aaa -eq -2)) {
    Write-Output "minus"
}
elseif (-not ($aaa -eq 1)) {
    Write-Output "etc"
}
else {
    Write-Output "one"
}


			
演算子 概要
-and AND条件
-or OR条件
-xor 排他条件
-not 否定条件


true、falseは$true、$falseを使う


$flg = $true
$flg2 = $false

if($flg){
	
	echo "Hello"
}

if(!$flg2){
	
	echo "World"
}


switch文

				
$aaa = 1

switch ( $aaa )
{
    0{
        echo "zero"
    }
    1{
        echo "one"
    }
    default{
        echo "etc"
    }
}

			
文字列でもいけます。大文字、小文字は意識されないので意識させる場合、-cをつけます
switch -c ( $aaa )

for文

				
for ( $i = 0; $i -lt 3; $i++ )
{
    echo('$i:' + $i)
}

			

while文

				
$i = 0

while ($i -lt 3)
{
    echo('$i:' + $i)
    $i++
}

			

do-while文

				
$i = 0

do
{
    echo('$i:' + $i)
    $i++
}
while ($i -lt 3)


			

foreach文

				
$aaa = "1,2,3"
$bbb = $aaa.Split(",")

foreach ($ccc in $bbb)
{
    Write-Output ('$ccc:' + $ccc)
}

foreach ($ccc in 1..3)
{
    Write-Output ('$ccc:' + $ccc)
}

			
Splitは文字を配列にするメソッドです。ここでは文字列をカンマで区切って配列にしています。
..(ドットドット)は連続した数字の配列を作成してくれます。

continue文、break文

				
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",")

foreach ($ccc in $bbb)
{
    if($ccc -eq "1"){
        continue
    }
    if($ccc -eq "3"){
        break
    }
    echo ('$ccc:' + $ccc)
}
# $ccc:2のみ出力される

			

ForEach-Object

				
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",")

$bbb | ForEach-Object {

# foreachも同様
# $bbb | foreach {

    # $_で値を受け取る
    $ccc = $_
    if($ccc -eq "1"){
        # ForEach-Objectではcontinueを使えない
        return
    }
    if($ccc -eq "3"){
        break
    }
    echo ('$ccc:' + $ccc)
}
# $ccc:2のみ出力される

			
foreachとの違いは、ForEach-Objectは1行毎に処理するが、foreachは一気に処理を行う。


Where-Object(条件フィルター)

				
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",") | Where-Object { $_ % 2 -eq 1 } 
# $_で値を受け取る
 
# whereも同様
# $bbb = $aaa.Split(",") | where{$_ % 2 -eq 1} 

$bbb | ForEach-Object {
    $ccc = $_
    echo ('$ccc:' + $ccc)
}

# 以下が出力
# $ccc:1
# $ccc:3
# $ccc:5

			

省略形
				
$aaa = "abc,def"
$bbb = $aaa.Split(",") | ? { $_ -like '*b*' } 
# $_で値を受け取る
# Where-Objectの省略形として ? がある(同じ動きをする)
# -likeであいまい検索。アスタリスクを付ける

$bbb | % {
    $ccc = $_
    echo ('$ccc:' + $ccc)
}

# ForEach-Objectの省略形として % がある(同じ動きをする)

# 以下が出力
# $ccc:abc

			




ページのトップへ戻る