【问题标题】:Powershell get row older than 30 days and export them into another csv filePowershell 获取超过 30 天的行并将它们导出到另一个 csv 文件中
【发布时间】:2020-10-14 18:46:04
【问题描述】:

我有一个按以下格式的 csv 文件,我想导出 30 天之前的行

Target;Date;Safe
Box11;01/10/20;abc_test1
Box2;02/10/20;xyz_test2
Box3;03/10/20;mnp_test3
Box2;01/09/20;xyz_test2
Box3;02/09/20;mnp_test3
Box11;03/09/20;abc_test1

我使用如下脚本但失败了

$Data = Import-CSV "D:\Dev\test1.csv" | where { [datetime]::ParseExact($_.Date, "dd/MM/yy", $null) -lt (get-date).date.adddays(-30)}
$Data | Export-Csv "D:\Dev\test1234.csv"

失败原因 -

使用“3”个参数调用“ParseExact”的异常:“字符串不是 被识别为有效的 DateTime。

新 csv 文件中的预期结果是

Box2;01/09/20;xyz_test2
Box3;02/09/20;mnp_test3
Box11;03/09/20;abc_test1

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    您在导入和导出时都缺少 -delimiter

    $Data = Import-CSV "D:\Dev\test1.csv" -delimiter ";" | where { [datetime]::ParseExact($_.Date, "dd/MM/yy", $null) -lt (get-date).date.adddays(-30)}
    $Data | Export-Csv "D:\Dev\test1234.csv" -delimiter ";"
    

    【讨论】:

    • 使用“3”个参数调用“ParseExact”的异常:“字符串未被识别为有效的日期时间。”在 line:1 char:64 + ... " | where { [datetime]::ParseExact($_.Date, "dd/MM/yy", $null) -lt (g ... + ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : FormatException
    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多