I want to select the second/third/forth object of a Get-ChildItem
statement in my PowerShell script. This gives me the first:
$first = Get-ChildItem -Path $dir |
Sort-Object CreationTime -Descending |
Select-Object -First 1
This gives me the first three:
$latest = Get-ChildItem -Path $dir |
Sort-Object CreationTime -Descending |
Select-Object -First 3
I would like to get the second, or the third, or the fourth. (NOT the first two and so on).
Is there a way?
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.
First Item
gci > out.txt
Get-Content out.txt | Select -Index 7 | Format-list
Second Item
gci > out.txt
Get-Content out.txt | Select -Index 8 | Format-list
The item between n and p
$n=3
$p=7
$count = 0
$index = $n+7
$p=7+7
while($true){
$index = $index + $count
Get-Content out.txt | Select -Index $index | Format-list
if($index -eq $p)
{
break;
}
$count = $count + 1
}
Note : The first seven lines are empty and the description lines.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With