2017-06-11 25 views
3

ロギング情報を持つCSVファイルがあります。ファイルの日付/時刻情報は、UNIXのタイムスタンプ形式で書かれています。Powershellを使用してCSVファイルから行を削除します

5分を超えるすべての行を削除したいと思います。後

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

5分が過ぎたりしていないかどうかに関係なく、私のCSVファイルが終わる完全に空:

$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ファイルは次のようになります。私はこれを行うには、次のコードを使用します上記のスクリプト行を実行します。

+0

はこれを試してみてください。私は、datetimeとstringを比較すると思います – restless1987

答えて

2

テストではレプリケートできませんでしたが(実際にはソースファイルが必要になる可能性があります)。私は問題は、エンコーディングとデリミタの両方をImport-CSVに指定する必要があることだと思います。私はそれがしたいようPowerShellは日時を理解することを期待することはない

$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'