Select second or third object / element Select second or third object / element powershell powershell

Select second or third object / element


For selecting the n-th element skip over the first n-1 elements:

$third = Get-ChildItem -Path $dir |         Sort-Object CreationTime -Descending |         Select-Object -Skip 2 |         Select-Object -First 1

or select the first n and then of those the last element:

$third = Get-ChildItem -Path $dir |         Sort-Object CreationTime -Descending |         Select-Object -First 3 |         Select-Object -Last 1

Beware, though, that the two approaches will yield different results if the input has less than n elements. The first approach would return $null in that scenario, whereas the second approach would return the last available element. Depending on your requirements you may need to choose one or the other.


The second approach suggested by @AnsgarWiechers can easily be turned into a simple reusable funtion, like so:

function Select-Nth {    param([int]$N)     $Input | Select-Object -First $N | Select-Object -Last 1}

And then

PS C:\> 1,2,3,4,5 |Select-Nth 33


You could also access the element as an array item, using the index n-1. This seems more succinct than chaining pipes.

$third = (Get-ChildItem -Path $dir | Sort-Object CreationTime -Descending)[2]