breakとcontinue(PowerShell入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。

breakはループ制御(foreach, for, while, do)やswichないで出現した場合、そこでそのコードを終了します。

以下はforループでの break 使用例です。変数 $i が3に等しくなるとbreakが実行され、コードを終了します。

PS> for ( $i = 0; $i -lt 5; $i++ )
>> {
>>   if ( $i -eq 3 )
>>   {
>>     break
>>   }
>>   Write-Host $i
>> }
>>
0
1
2

次に continue ですが continueが実行されると、実行フローはループの先頭へ移動し、次の反復処理を行います。breakと異なるのは、ループを終了しないことです。

以下はforループでのcontinue使用例です。if文で$i % 2が真の場合(計算結果が奇数)にcontinueが実行され、実行フローがループの先頭であるforに移動します。

PS > for ( $i = 0; $i -lt 10; $i++ )
>> {
>>   if ( $i % 2 )
>>   {
>>     continue
>>   }
>>   Write-Host $i
>> }
>>
0
2
4
6
8

foreach(PowerShell 入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。

foreachはコレクションに含まれるすべての項目を順番に処理します。構文は次の通りです。

foreach ( 変数 in コレクション )
{
    実行するスクリプト
}

よく知られたコレクションの一つに配列があります。下記は配列変数$weekdayから値を1つずつ取り出して表示します。

$weekdayには値が5つ格納されているので5回ループし、"Mon"から順番に値を取り出して変数$wに代入し、Write-Hostコマンドレットでコンソールに出力します。

PS > $weekday = "Mon","Tue","Wed","Thu","Fri"
PS > foreach ($w in $weekday)
>> {
>> Write-Host $w
>> }
>>
Mon
Tue
Wed
Thu
Fri

もう1つ例を示します。

下記はGet-Serviceコマンドから返される項目でStatusが「Running」になっているサービス名を表示します。

Get-Serviceコマンドレットでローカルコンピュータ上のサービスを取得し、その結果の1つ1つを$sに取り出しながらループを行います。

PS > foreach ( $s in Get-Service )
>> {
>>   if ($s.Status -eq "running")
>>   {
>>     Write-Host $s.ServiceName
>>   }
>> }
>>

do/whileループ(PowerShell 入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。

do/while文は最後に評価が行われるループです。最後の評価が「偽」となった時点でループを終了します。よって、必ず1回は処理の実行を行います。

do/whileループの構文は下記の通りです。

do
{
  実行する文
}
while (条件)

下記は変数$iが5未満の場合実行します。

PS C:\Work> $i = 0
PS C:\Work> do
>> {
>>   Write-Host $i
>>   $i++
>> }
>> while ($i -lt 5)
>>
0
1
2
3
4

whileループ(PowerShell 入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。 

whileループは、指定した条件が真の場合にループし続けます。

構文は下記の通りです。

while ( 条件 )
{
    実行する文
}

下記は変数$cntが10以下の場合ループし続けます。{ ~ }の中のコードブロックが実行される度に$cntがインクリメントされ、10以上になったときに条件を満たしループを終了します。

PS C:\Work> $cnt = 0
PS C:\Work> while ( $cnt -le 10 )
>> {
>>   Write-Host "Count: $cnt"
>>   $cnt++
>> }
>>
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Count: 8
Count: 9
Count: 10

ここで1つ無限ループを行う方法を紹介します。

それは条件に 1 と記述することです。

PowerShellでは0は偽、それ以外は真と見なすため 1 記述すれば無限ループするというわけです。

下記は実行すると延々と現在日時を表示し続けます。

無限ループを停止するには[Ctrl] +[C]を入力してください。

PS C:\Work> while (1)
>> {
>> Write-Host (Get-Date)
>> }
>>

forループ(PowerShell 入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。

今回はfor文について説明したいと思います。

PowerShellにおけるforループの構文は次の通りです。

for ( 初期化; 評価式; インクリメント )
{
    評価式がTrueの場合に実行するスクリプト
}

ただし、PowerShellでは比較演算子の表し方が独特であるため、慣れるまでは少し違和感があります。

比較演算子は比較演算子(PowerShell 入門) を参照ください。

c言語やC#では

for ( i = 0; i < 5; i++ )
{
}

と書くところを、PowerShellでは

for ( $i = 0; $i -lt 5; $i++ )
{
}

と記述します。

実際の使用例は下記の通りです。(for文を使用してカウントを表示する例です)

PS > for ( $i = 0; $i -lt 5; $i++ )
>> {
>>   Write-Host ("カウント" + $i)
>> }
>>
カウント0
カウント1
カウント2
カウント3
カウント4