LastWriteTime 未排序为 DateTime

LastWriteTime is not sorting as a DateTime

我需要遍历一个目录,并删除除最新的 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) 是最旧的文件,应该 return 在列表的顶部,但它没有。将升序 always returns Copy (12) 排序为第一个,降序 always returns 01 - Copy (3) - Copy.此外,Copy (16) 之后的所有文件夹显然都乱序了。

如何根据 LastWriteTime 获取正确排序的文件夹数组?

您应该只指定 属性 的名称作为 Sort-Object 的参数。也就是说,写 Sort-Object LastWriteTime 而不是 Sort-Object $_.LastWriteTime.