PowerShell Foreach-Object Cmdlet
Looping is core method for scripting. About the only topic of confusion in PowerShell is that between the foreach operator and the Foreach-Object cmdlet.
In a nutshell if you need pipelining study this page. If you want a quick easy method study the simple PowerShell loops here.
My mission on this page is to give you simple examples on how to master the PowerShell foreach loop. As you become more proficient in PowerShell, so the instructions grow in complexity.
Topics for PowerShell's Foreach-Object Cmdlet
The Foreach-Object cmdlet specializes in controlling loops which accept pipeline input. Another of this cmdlet's interesting features is the -begin and -end parameters.
The purpose of this script is to interrogate the Windows System event log, and then save the results to a file.
# PowerShell Foreach-Object
Note 1: The key is element is piping the output from $Logs into the Foreach-Object cmdlet. The script then extracts the $_.message from each item and writes it into a file.
Note 2: To check my logic, you may wish to amend the values for $LogPath and $LogType to suit your computer.
Note 3: The Foreach-Object has this alias: % (Percent sign)
# Foreach-Object -begin and -end
Note 4: Observe how the -begin and -end parameters write date stamps.
LEM will alert you to problems such as when a key application on a particular server is unavailable. It can also detect when services have stopped, or if there is a network latency problem. Perhaps this log and event management tool's most interesting ability is to take corrective action, for example by restarting services, or isolating the source of a maleware attack.
Yet perhaps the killer reason why people use LEM is for its compliance capability, with a little help from you, it will ensure that your organization complies with industry standards such as CISP or FERPA. LEM is a really smart application that can make correlations between data in different logs, then use its built-in logic to take corrective action, to restart services, or thwart potential security breaches - give LEM a whirl.
My take on the debate between the simple foreach operator and the more sophisticated Foreach-Object cmdlet is this: if in doubt start with plain foreach. However, if you need piping, then stick with the cmdlet. If execution speed is important, then read-up on foreach in PowerShell 3.0.
It surprised me that the simple foreach operator was an order of magnitude faster than the Foreach-Object cmdlet.
# Comparision of PowerShell foreach operator and Foreach-object
Note 5: This script uses Measure-Command to compare PowerShell's two looping techniques. See more on $_.property.
For Even More Information about Foreach Loops - Check About_Foreach
Summary of PowerShell Foreach-Object Cmdlet
The secret of understanding the PowerShell foreach-object is to focus on piping. Also observe that the plain foreach statement contains 'in'. Finally, the cmdlet has parameters such as -begin.
If you like this page then please share it with your friends
See more Windows PowerShell examples
Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.