PowerShell の Foreach オブジェクトから退出する方法
-
PowerShell の
ForEach-Object
からbreak
条件を使用して退出する -
PowerShell の
ForEach-Object
からif
とbreak
を使用して退出する -
PowerShell の
ForEach-Object
からif
とreturn
を使用して退出する -
PowerShell の
ForEach-Object
からif
とcontinue
を使用して退出する - 結論

ForEach-Object
コマンドレットは、ユーザーがコレクションを反復処理し、入力オブジェクトのコレクション内の各アイテムに対して操作を行うことを可能にします。ForEach-Object
において、入力オブジェクトはコマンドレットにパイプされるか、-InputObject
パラメーターを使用して指定されます。
PowerShell で ForEach-Object
コマンドを構築するための 2つの異なる方法があります:スクリプトブロック
および 操作ステートメント
。ForEach-Object
コマンドレットは、各入力オブジェクトのスクリプトブロックまたは操作ステートメントを実行します。
操作を指定するには スクリプトブロック
を使用します。$_
変数はスクリプトブロック内で現在の入力オブジェクトを表すために使用されます。
スクリプトブロック
には任意の PowerShell スクリプトを含めることができます。例えば、以下のコマンドは、各コマンドレットの Name
プロパティ、関数、およびコンピュータにインストールされている エイリアス
の値を取得します。
Get-Command | ForEach-Object { $_.Name }
ForEach-Object
コマンドのもう 1つの構築方法は、操作
ステートメントを使用することです。操作ステートメントを使用してプロパティ値を指定したり、メソッドを呼び出したりできます。
Get-Command | ForEach-Object Name
時々、ForEach-Object
から退出したい状況があるかもしれませんが、それは ForEach
ステートメントとは異なる動作をします。ForEach-Object
では、各オブジェクトが生成されるとすぐにステートメントが実行されます。
ForEach
ステートメントでは、ループが実行される前にすべてのオブジェクトが収集されます。ForEach-Object
は、実際のループではなくコマンドレットです。
ループを退出するために break
や continue
を使用すると、ステートメントをスキップするのではなく、スクリプト全体が終了します。ただし、PowerShell でいくつかの条件を使って ForEach-Object
オブジェクトから退出することは可能です。
PowerShell の ForEach-Object
から break
条件を使用して退出する
PowerShell では、foreach-object
ループがコレクションやパイプライン内の各アイテムを反復処理するために一般的に使用されます。時折、特定の条件に基づいてこのループを早期に退出する必要が生じます。
break
ステートメントは、特定の条件が満たされるとすぐにループを終了するためのシンプルな方法を提供します。
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
このコードスニペットでは、数字を表す文字列を含む配列 $numbers
を初期化します。また、最初に $Break
を $False
に設定します。
foreach-object
ループ内で、Where-Object
を使用して $Break
変数に基づいてアイテムをフィルタリングします。 $Break
が $False
の場合、ループは続行されます。さもなければ、停止します。
ループ内で、現在のアイテムが three
と等しいかどうかを確認します。等しい場合、 $Break
を $True
に設定し、ループを終了させます。
出力:
PowerShell の ForEach-Object
から if
と break
を使用して退出する
時には、特定の条件に基づいてこのループを早期に終了させる必要があります。if
メソッドは、ループ内で条件を評価し、その条件が満たされたときに退出を促すことで、このタスクを簡単に達成するアプローチを提供します。
このメソッドでは、ForEach-Object
から退出するために、オブジェクトのコレクション内で 空
値を使用する必要があります。例えば、if
条件を使用して ForEach-Object
から退出することができます。
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
提供されたコードスニペットでは、数字を表す文字列を含む配列 $numbers
を初期化します。foreach-object
ループ内で、配列内の各アイテムを反復処理します。
if
ステートメントを使用して、現在のアイテム $_
が空の文字列かどうかを確認します。条件が真である場合、break
を使用してループからすぐに退出します。
さもなければ、ループは続行され、現在の数を Write-Host
を使用して出力します。
出力:
PowerShell の ForEach-Object
から if
と return
を使用して退出する
特定の条件に基づいて早期にループを終了させることができる PowerShell での foreach-object
ループから退出するには、if
および return
メソッドの組み合わせを使用します。このメソッドは、特定の条件が満たされたときにループ実行を停止し、呼び出し元に制御を戻す必要がある場合に特に便利です。
ループ内では、if
ステートメントを使用してループから退出する条件を評価します。条件が真である場合、return
ステートメントが実行され、ループの実行が即座に終了し、呼び出し元に制御が戻ります。
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
提供されたコードスニペットでは、数字を表す文字列を含む配列 $numbers
を初期化します。foreach-object
ループ内で、配列内の各アイテムを反復処理します。
if
ステートメントを使用して、現在のアイテム $_
が three
と等しいかどうかを確認します。条件が真である場合、return
を使用してループからすぐに退出します。
さもなければ、ループは続行され、現在の数を Write-Host
を使用して出力します。
出力:
PowerShell の ForEach-Object
から if
と continue
を使用して退出する
PowerShell では、continue
ステートメントはループの現在の反復処理の残りをスキップし、次の反復処理に進むために使用されます。主に特定の反復処理をスキップするためにループで使用されますが、foreach-object
ループ内でループの終了を実装するためにも利用できます。
ループ内で continue
ステートメントを戦略的に配置し、条件付きロジックを組み合わせることで、特定の条件に基づいてループを早期に終了させることができます。
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
提供されたコード例では、1 から 10 までの数字を含む配列 $numbers
を初期化します。foreach-object
ループ内で、配列内の各数字を反復処理します。
if
ステートメントを使用して、現在の数字が 5 と等しいかどうかを確認します。条件が真である場合、continue
ステートメントが実行され、ループは現在の反復処理をスキップし、次の反復処理に進みます。
これにより、指定された条件が満たされたときにループの早期終了が効果的に実現されます。
出力:
結論
要約すると、PowerShell の ForEach-Object
コマンドレットはコレクションを反復処理し、各アイテムに対して個別に操作を行うことを可能にします。我々は、break
、return
、および continue
を使用して ForEach-Object
ループから早期に退出するさまざまな方法を探求しました。
break
と continue
はループ内の制御フローを直接提供しますが、return
はループから退出して呼び出し元に戻るための別のアプローチを提供します。各メソッドにはそれぞれの使用ケースと利点があり、スクリプト実行に柔軟性を提供します。
今後、ユーザーはこれらのメソッドをさまざまなシナリオで試すことで理解を深め、それらのニュアンスを探求し、PowerShell スクリプトでの使用を習得することができます。