Я не совсем понимаю ваш вопрос. Не могли бы вы попытаться перефразировать вопрос или привести больше / разных примеров?
Я угадал, чего ты пытаешься достичь. Посмотрите на приведенный ниже код.
Я предположил, что ваша структура папок всегда будет одинаковой. Вывод покажет вам самую последнюю из папок с именем «DIR» в каждой папке test- - . Я как бы организовал глубину папок в «уровни», надеясь немного прояснить ситуацию.
Я часто нахожу, что использование ForEach и s скрипт-блока дает вам больший контроль над данными, чем использование ForEach-Object в канале.
$Level1 = Get-ChildItem -Path "C:\test" -Directory
ForEach ($D1 in $Level1)
{
Write-Host "Getting ChildItem of DIR: $($D1.FullName)"
$Level2 = Get-ChildItem -Path $D1.FullName -Directory
ForEach ($D2 in $Level2)
{
Write-Host "Getting ChildItem of DIR: $($D2.FullName)`n`n"
$LastModDir = Get-ChildItem -Path $D2.FullName -Directory | Sort-Object CreationTime | Select-Object Name -Last 1
Write-Host "$D2 $($LastModDir.Name)"
}
}
Выход:
test-1-1 DIR1
test-1-2 DIR2
test-2-1 DIR1
test-2-2 DIR2
Даже если это не то, чего вы пытались достичь, методы могут быть полезны для достижения вашей цели.
EDIT:
Я только что заметил, что вы хотите отсортировать папки 1.1 и т. Д., А не папки DIR. Просто добавьте еще один «уровень» с помощью цикла ForEach.