For Each…Next
Definition: Repeats a group of statements for each element
in an array or collection.
A For Each loop is designed to automatically run through all the items in a collection or array. In Windows PowerShell you can iterate all the items in a collection by using the ForEach-Object collection (or its more-commonly-used alias, foreach). To set up a For Each loop in Windows PowerShell, call foreach followed by two parameters:
· The collection you want to iterate. This value must be enclosed in parentheses.
· The action you want to perform on each item in that collection. This value must be enclosed in curly braces: {}.
For example, the following command sets up a For Each loop that uses the Get-ChildItem Cmdlet to return a collection of all the files found in the folder C:\Scripts. Note the syntax that must be used: ($i in get-childitem c:\scripts). Obviously this is different than what you are used to. After all, in VBScript you “kick off” a For Each loop using code similar to this:
For Each i in colItems
However, in Windows PowerShell you call foreach and then kick things off using code like this:
($i in $colItems)
After specifying the loop condition the command then indicates the behavior to be performed:
{$i.extension}
This simply says, “For each item ($i) in the collection, echo back the value of the Extension property.”
Here’s the actual command:
foreach ($i in get-childitem c:\scripts) {$i.extension}
You should get back something similar to this, depending on the files found in C:\Scripts:
.gif
.xls
.xls
.txt
.txt
.xls
.ps1
.ps1
.zip
.vbs
.txt
.ppt