Search code examples
powershellpowershell-2.0higher-order-functionsarray-map

Using range operator with a step


The PowerShell range operator generates a list of values:

>1..6

1
2
3
4
5
6

How can I generate a list of values with a specific step? For example, I need a list from 1 to 10 with step 2.


Solution

  • The range operator itself doesn't support skipping/stepping, but you could use Where-Object (or the Where() method if you're running version 4.0 or above) to filter out every second:

    PS C:\> (1..10).Where({$_ % 2 -eq 0})
    2
    4
    6
    8
    10
    

    Version 2.0 and up:

    PS C:\> 1..10 |Where-Object {$_ % 2 -eq 0}
    2
    4
    6
    8
    10