3

我有一个 CSV 文件,其中包含各种不同的 ID。在一些帮助下,我已经能够将文件修剪为日期最早的 ID,并且效果很好……大多数时候。我有几条记录似乎返回最新日期,而另一条记录返回最旧日期,我不知道为什么。发生这种情况的记录总是相同的。

这是我的输入 CSV 中的一个示例:

Number  File Date
OU00067949, 6/14/2012,
OU00067949, 6/19/2012,
OU00067949, 11/15/2012,
OU00067949, 1/30/2013,
OU00080302, 1/3/2013,
OU00080302, 1/3/2013,
OU00080302, 12/28/2012,
OU00080302, 12/28/2012,
OU00080302, 12/27/2012,
OU00080302, 12/27/2012,
OU00080281, 2/14/2013,
OU00080281, 1/30/2013,
OU00080281, 1/16/2013,
OU00080319, 12/27/2012,
OU00080319, 12/27/2012,

这是输出:

Number  File Date
OU00067949, 1/30/2013,
OU00080302, 1/3/2013,
OU00080281, 1/16/2013,
OU00080319, 12/27/2012,

我预计 OU00067949 的日期为 2012 年 6 月 14 日,因为这是最早的日期。相反,我得到了 2013 年 1 月 30 日。OU00080302 也是如此,但其他都是正确的。任何线索可能导致这种情况?

这就是脚本的全部内容:

Import-CSV $ImportFile | Group-Object "Number" | ForEach-Object { $_.Group | Sort-Object "File Date" | Select -First 1} | Export-CSV $ExportFile -NoTypeInformation

任何帮助将不胜感激。

4

1 回答 1

17

看起来它正在尝试将日期排序为字符串。试试这个:

Import-CSV $ImportFile | Group-Object "Number" | ForEach-Object { $_.Group | Sort-Object { $_."File Date" -as [datetime] } | Select -First 1} | Export-CSV $ExportFile -NoTypeInformation

所以这:

Sort-Object "File Date"

变成了这样:

Sort-Object { $_."File Date" -as [datetime] }

信用在这里:

于 2013-11-05T15:14:27.123 回答