Мне нужно перебрать каталог и удалить все, кроме 10 самых новых папок.Перепрыгнув через кучу вопросов, я попадаю на
$folder = "C:\Projects\BuildDeleteTest"
$keep = 10
$folders = Get-ChildItem $folder
#echo $folders
#echo $folders.Count
echo $folders | Sort-Object -Property $_.LastWriteTime.DateTime | Select-Object -First (20)
и могу удалить все элементы, а затем папки.Однако LastWriteDateTime на самом деле не сортируется как DateTime, поскольку мой список папок
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/21/2018 10:01 AM 01 - Copy (12)
d----- 12/21/2018 10:01 AM 01 - Copy (13)
d----- 12/21/2018 10:02 AM 01 - Copy (14)
d----- 12/21/2018 10:02 AM 01 - Copy (15)
d----- 12/21/2018 9:35 AM 01 - Copy (16)
d----- 12/21/2018 10:01 AM 01 - Copy (17)
d----- 12/21/2018 10:06 AM 01 - Copy (17) - Copy
d----- 12/21/2018 10:03 AM 01 - Copy (2)
d----- 12/21/2018 10:04 AM 01 - Copy (2) - Copy
d----- 12/21/2018 10:03 AM 01 - Copy (3)
d----- 12/21/2018 10:04 AM 01 - Copy (3) - Copy
Очевидно, 01 - Copy (16)
является самым старым файлом и должен возвращаться вверху списка, но это не так.,Сортировка по возрастанию всегда возвращает Copy (12)
как первое, а по убыванию всегда возвращает 01 - Copy (3) - Copy
.Кроме того, все папки после Copy (16)
явно не в порядке.
Как получить правильно отсортированный массив папок, основанный на LastWriteTime?