0

我有一个包含几行和一个日期列的 CSV 文件。我想获取日期超过 30 天的所有行。这是我最好的尝试:

$Data = Import-CSV "H:\Data.csv"
$CutoffDate = (Get-Data).AddDays(-30)
$Data | Where-Object {$_.Date -lt $CutoffDate}

这不会返回任何内容,并且肯定有日期超过 30 天的行。我的猜测是这$_.Date不被认为是一个日期,但在这种情况下,我很难做到如何做到这一点。有人可以在这里指出我正确的方向吗?谢谢。-铝

4

1 回答 1

3

使用 导入数据时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}
于 2013-03-07T17:27:22.547 回答