Hidden Array Extensions in PowerShell 4.0

by Jan 20, 2014

PowerShell 4.0 (final version as found in Windows 8.1) has Foreach and Where built directly into arrays. This is a geek stuff, so there is no apparent advantage to it over using the traditional pipeline (except maybe for speed).

This line will get only uneven numbers from a list of numbers:

@(1..10).Where({$_ % 2}) 

And this line will get only services that are actually running:

@(Get-Service).Where({$_.Status -eq 'Running'}) 

And there is more (undocumented) stuff. This line will get all numbers that are greater than 2, but only the first 4 of them:

@(1..10).Where({$_ -gt 2}, 'skipuntil', 4) 

Finally, this line will do the same, but then converts them to the TimeSpan objects:

@(1..10).Where({$_ -gt 2}, 'skipuntil', 5).Foreach([Timespan]) 

Twitter This Tip! ReTweet this Tip!