LastWriteTime не сортируется как DateTime - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно перебрать каталог и удалить все, кроме 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?

1 Ответ

0 голосов
/ 21 декабря 2018

Вы должны указывать только имя свойства в качестве аргумента Sort-Object.То есть напишите Sort-Object LastWriteTime вместо Sort-Object $_.LastWriteTime.

...