トッカンソフトウェア

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 否定条件

■サンプル: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-Objectの省略形として % がある(同じ動きをする)
# $bbb | % {
# 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-Objectの省略形として ? がある(同じ動きをする)
# $bbb = $aaa.Split(",") | ?{$_ % 2 -eq 1} 
# whereも同様
# $bbb = $aaa.Split(",") | where{$_ % 2 -eq 1} 

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

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

# 以下が出力
# $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

			




ページのトップへ戻る