我有一个包含多行和一个日期列的CSV文件。我想抓住所有日期超过30天的行。这是我最好的尝试:
$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Data).AddDays(-30)
$Data | Where-Object {$_.Date -lt $CutoffDate}
这不会返回任何内容,并且肯定有超过30天的日期行。我的猜测是$_.Date
不被认为是一个约会,但就是这样,我很难理解如何做到这一点。任何人都能指出我在正确的方向吗?谢谢。 -Al
答案 0 :(得分:2)
使用Import-CSV
导入数据时,所有属性都将创建为字符串。要按日期过滤,您需要将日期设为datetime
个对象。样本在第二行(Get-Data
而不是Get-Date
)上也有拼写错误。试试这个:
$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}
如果您愿意,可以将其与Import-CSV
结合使用,如下所示:
$CutoffDate = (Get-Date).AddDays(-30)
$Data = Import-CSV "H:\Data.csv" | Where-Object {$_.Date -as [datetime] -lt $CutoffDate}