← Back to Home

PowerShell Loops: foreach と ForEach-Object

Views: 998

You can try the commands on our interactive shell.

PowerShell Loops: foreachForEach-Object

このチュートリアルでは、PowerShell のループについて調べます。特に、foreach ループとそのエイリアス For-Each、更に強力な ForEach-Object コマンドレットを探します。

foreach ループ (Alias: For-Each)

foreach ループは、オブジェクトのコレクションを反復処理するために使用されます。伝統的な for ループと同様ですが、よりコンパクトな構文を持っています。基本的には以下のようになります。

foreach ($variable in $collection) {
    # 各要素に対するコード
}

例をみてみます。

Example: 配列のループ

colors という名前の文字列の配列を持っています。

$colors = @("Red", "Green", "Blue", "Yellow")

この配列に対して foreach ループを使用します。

foreach ($color in $colors) {
    Write-Host $color
}

このコマンドレットは、各色を一行ずつ出力します。

Red
Green
Blue
Yellow

ForEach-Object コマンドレット

ForEach-Object コマンドレットは、foreach ループより強力です。各オブジェクトに対する操作を行うことができ、現在のオブジェクトを処理中としてアクセスすることができます。

Example: 配列のループに ForEach-Object を使用

同様の例をみてみます。

$colors = @("Red", "Green", "Blue", "Yellow")

この配列に対して ForEach-Object コマンドレットを使用します。

$colors | ForEach-Object {
    Write-Host $_
}

$_ の形式で現在のオブジェクトをアクセスすることができます。このコマンドレットは、各色を一行ずつ出力します。

Red
Green
Blue
Yellow

Example: 配列とオブジェクトの変更

PSCustomObject を使ってカスタム オブジェクトを作成します。

$people = @(
    [PSCustomObject]@{Name="John"; Age=30},
    [PSCustomObject]@{Name="Jane"; Age=25},
    [PSCustomObject]@{Name="Bob"; Age=40}
)

この配列に対して ForEach-Object コマンドレットを使用して、オブジェクトを変更します。

$people | ForEach-Object {
    $_.Age += 1
} | Write-Host

このコマンドレットは、各人に関する情報を出力します。

31
26
41

ベスト プラクティス

PowerShell のループを使用する際には、以下のベスト プラクティスに注意してください。

結論

このチュートリアルでは、PowerShell のループについて調べました。foreach ループと ForEach-Object コマンドレットを使用することで、配列やオブジェクトに対して操作を行うことができます。また、ベスト プラクティスを学びました。これらのスキルを持つことで、より複雑なスクリプティング タスクに自信を持って取り組む準備ができたことになります!

Try it Now!