This is the first in a seven part series on how to use the
PowerShell pipeline. I’ve been teaching PowerShell since 2009. The biggest hurdle that I have found for IT
Professionals is understanding how the pipeline works. So this past week after class, I wrote up a
24 page document to augment my class delivery.
Hope you enjoy it.
The PowerShell pipeline is a key feature of our favorite
scripting language. It has the potential
to greatly reduce your coding efforts.
Here are two examples that produce the same answer. The difference is that the first example uses
the PowerShell pipeline, and the second does not:
Ex 1 : Using the PowerShell Pipeline
Get-Process |
Where-Object
CPU -gt 10 |
Measure-Object
-Property CPU
-sum |
Select-Object
-ExpandProperty Sum
Ex 2 : Not using the PowerShell Pipeline
$Procs = Get-Process
$Sum = $Null
ForEach ($Proc
in $Procs)
{
If ($Proc.CPU -gt 10)
{
$Sum
+= $Proc.cpu
}
}
Write-Output $Sum
Here are the same two examples executed using the cmdlet Measure-Object. Notice the difference in the amount of time
that it takes to complete these two tasks.
Ex 3 : Processing time comparison between Ex 1 and Ex 2.
Measure-Command -Expression {
Get-Process
|
Where-Object
CPU -gt 10 |
Measure-Object
-Property CPU
-sum |
Select-Object
-ExpandProperty Sum
}
| Select-Object
-ExpandProperty TotalMilliseconds
Measure-Command -Expression {
$Procs
= Get-Process
$Sum = $Null
ForEach
($Proc in
$Procs)
{
If
($Proc.CPU
-gt 10)
{
$Sum
+= $Proc.cpu
}
}
Write-Output
$Sum
}
| Select-Object
-ExpandProperty TotalMilliseconds
3.9183
5.4664
In many cases, the pipeline will run faster than using
traditional structural programming.
Even with these advantages, the PowerShell pipeline is a
technology that is very hard to grasp for most IT professionals. Not only are we treading into the world of
the developer, but just the concept of the pipeline is a mystery to many.
Comments