PowerShell Loops: foreach と ForEach-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 のループを使用する際には、以下のベスト プラクティスに注意してください。
For-EachやForEach-Objectを使うように、伝統的なforループよりもコンパクトで読みやすいようにします。ForEach-Objectで現在のオブジェクトをアクセスする際には、$_の形式を使用してください。- 類似した名前の変数 (
iなど) を使わないようにしてください。
結論
このチュートリアルでは、PowerShell のループについて調べました。foreach ループと ForEach-Object コマンドレットを使用することで、配列やオブジェクトに対して操作を行うことができます。また、ベスト プラクティスを学びました。これらのスキルを持つことで、より複雑なスクリプティング タスクに自信を持って取り組む準備ができたことになります!