我有一个名为events.csv的csv文件,其中包含如下事件列表
"Severity","EventId","Event","Trigger (MM/DD/YYYY 24H)","SourceID","Source"
Information,1866,vol.resize.fail:VolumeResizeFailed,05/28/2015 12:25:42,286,controller1:/volA
Information,1865,vol.resize.success:VolumeResizeSuccess,05/28/2015 12:24:19,286,controller1:/volA
现在我想从文件中获得TriggerColumn(time)距离当前时间小于24小时的条目列表。
现在的代码是这样的
$dateToCompare = (Get-date).AddDays(-1)
$eventsList = Import-Csv $eventsReportFileName | where-object {$_."Trigger (MM/DD/YYYY 24H)" -gt $dateToCompare}
日期比较开始工作,因为它说它们是不同的类型
PS H:> $a."Trigger (MM/DD/YYYY 24H)"
05/28/2015 12:25:42
05/28/2015 12:24:19
PS H:> $dateToCompare = (Get-date).AddDays(-1)
PS H:> $dateToCompare
Thursday, May 28, 2015 7:24:30 PM
但是如果我进行类型转换,我就不能格式化日期。CSV文件的输出是固定的,不能更改。我所能做的就是改变Get-date和的格式玩。
如果有什么想法可以解决
如果日期来自csv,则它是字符串而不是datetime对象。而不是把你的(Get-Date). adddays(-1)变成一个字符串,把你的MM/DD/YYYY 24H变成一个DateTime对象。
。
$eventsList = Import-Csv $eventsReportFileName | Where-Object -FilterScript {[DateTime]::Parse($_."Trigger (MM/DD/YYYY 24H)") -gt $dateToCompare}