使用Powershell从CSV文件中删除行

使用Powershell从CSV文件中删除行,powershell,csv,unix-timestamp,Powershell,Csv,Unix Timestamp,我有一个带有日志信息的CSV文件。文件中的日期/时间信息以UNIX时间戳格式写入 我要删除所有超过5分钟的行。我使用以下代码来执行此操作: $FiveMinutesAgo=(Get-Date ((get-date).toUniversalTime()) -UFormat +%s).SubString(0,10)-300 $Content = Import-Csv "logfile.csv" | where {$_.DateCompleted -gt $FiveMinutesAgo} $Cont

我有一个带有日志信息的CSV文件。文件中的日期/时间信息以UNIX时间戳格式写入

我要删除所有超过5分钟的行。我使用以下代码来执行此操作:

$FiveMinutesAgo=(Get-Date ((get-date).toUniversalTime()) -UFormat +%s).SubString(0,10)-300
$Content = Import-Csv "logfile.csv" | where {$_.DateCompleted -gt $FiveMinutesAgo} 
$Content | Export-Csv -delimiter ";" -NoTypeInformation -encoding UTF8 -Path 'logfile.csv'
CSV文件如下所示:

"DateInitiated";"DateStarted";"DateCompleted";"InitiatedBy";"Action";"Status"
"1496659208";"1496659264";"1496752840";"administrator";"Reboot server";"Completed"

无论这五分钟是否已经过去,在执行上面的脚本行之后,我的CSV文件最终都是空的

我无法在测试中复制它(但可能需要实际的源文件)。我认为问题在于,您还需要在
导入CSV
上指定编码和分隔符(正如您在导出时已经指定的那样)

试试这个:

$FiveMinutesAgo=(Get-Date ((get-date).toUniversalTime()) -UFormat +%s).SubString(0,10)-300
$Content = Import-Csv "test.csv" -Delimiter ';' -Encoding UTF8 | where {$_.DateCompleted -gt $FiveMinutesAgo} 
$Content | Export-Csv -delimiter ";" -NoTypeInformation -encoding UTF8 -Path 'logfile.csv'

我决不会期望powershell像我希望的那样理解datetime。我猜,你把datetime和string比较一下