VBScript の For Each...Next ステートメントの変換
定義: 配列またはコレクション内の各要素に対して、一連のステートメントを繰り返して実行します。
For Each...Next
For Each ループは、コレクションまたは配列内の全要素を、自動的に処理するためのものです。Windows PowerShell でコレクション内の全要素を繰り返し処理するには、ForEach-Object コレクション (一般的な別名は foreach) を使用します。Windows PowerShell で For Each ループを設定するには、foreach を呼び出し、後ろに次の 2 つのパラメータを続けます。
繰り返し処理の対象になるコレクション。この値は、かっこで囲む必要があります。
そのコレクション内の各要素に対して実行するアクション。この値は、中かっこ {} で囲む必要があります。
たとえば、次のコマンドでは、Get-ChildItem コマンドレットを使用して、C:\Scripts フォルダ内にある全ファイルのコレクションを返す For Each ループが設定されます。構文では、($i in get-childitem c:\scripts) が使用されます。これは明らかに、いつものコードとは違います。VBScript では、次のようなコードから For Each ループを "開始" します。
For Each i in colItems
一方、Windows PowerShell では、foreach を呼び出してから、次のようなコードを使用して開始します。
($i in $colItems)
繰り返しの条件が指定できたら、次のように、実行するアクションを記述します。
{$i.extension}
ここでは、 "コレクション内の各要素 ($i) に対して、Extension プロパティの値をエコーバックする" というアクションを指定しています。
全体のコマンドは、次のとおりです。
foreach ($i in get-childitem c:\scripts) {$i.extension}
C:\Scripts フォルダ内で見つかったファイルに応じて、次のような結果が得られます。
.gif
.xls
.xls
.txt
.txt
.xls
.ps1
.ps1
.zip
.vbs
.txt
.ppt