删除CSV文件中日期早于7天的行

删除CSV文件中日期早于7天的行,csv,powershell,Csv,Powershell,我需要一个脚本,该脚本将使用“开始日期”列中的日期(如下面的示例数据中的.csv)在过去7天内从.csv文件导入数据行,然后将数据保存为另一个.csv文件 “名称”、“标题”、“开始日期” Dave,经理,2015年12月2日 吉姆,工人,2015年8月5日 苏珊,工人,2015年7月4日 导入源文件后,将开始日期列的值转换为实际日期,然后筛选所需时间范围内的值并导出结果: $maxage = (Get-Date).AddDays(-7) Import-Csv 'C:\path\to\inpu

我需要一个脚本,该脚本将使用“开始日期”列中的日期(如下面的示例数据中的.csv)在过去7天内从.csv文件导入数据行,然后将数据保存为另一个.csv文件

“名称”、“标题”、“开始日期”
Dave,经理,2015年12月2日
吉姆,工人,2015年8月5日
苏珊,工人,2015年7月4日

导入源文件后,将
开始日期
列的值转换为实际日期,然后筛选所需时间范围内的值并导出结果:

$maxage = (Get-Date).AddDays(-7)

Import-Csv 'C:\path\to\input.csv' |
  Where-Object { [DateTime]$_.'Date Started' -ge $maxage } |
  Export-Csv 'C:\path\to\output.csv' -NoType
如果将值强制转换为
DateTime
对象不起作用,则需要像这样解析它(根据需要调整格式字符串):


使用
import csv
拉入数据,
where object
过滤数据,
export csv-notype
导出数据。谷歌搜索这些术语会让你更详细地了解它们的工作原理。在引用
date start
列时,您需要将属性名称加引号,因为它包含一个空格。谢谢。但是,它是用美国格式解释日期,而不是我需要的英国格式dd/mm/yyyy。对不起,我应该说明一下。可以修改它以使用英国日期吗?@BigMartin在这种情况下,您需要使用适当的格式字符串解析日期,如我的答案下半部分所述。
[DateTime]::ParseExact(($_.'Date Started', 'dd\/MM\/yyyy', [Globalization.CultureInfo]::InvariantCulture)