PowerShell过滤CSV日期异常:无法保留当日及未来日期求助
PowerShell CSV日期过滤问题解决方法
问题核心在于Import-Csv会把CSV里的所有字段都解析成字符串类型,而Get-Date返回的是DateTime对象,直接拿字符串和DateTime对象做比较,逻辑会出现偏差,导致结果不符合预期。
你必须先将CSV中的expires字段转换为DateTime类型,再进行过滤判断,修正后的代码如下:
$Today = Get-Date $data = Import-Csv C:\temp\ReleaseRequest2.csv $data | Where-Object { [DateTime]$_.expires -ge $Today } | Select-Object expires
如果你的CSV日期格式比较特殊(比如固定为yyyy-MM-dd这类非系统默认格式),可以用ParseExact指定格式来避免解析错误:
$Today = Get-Date $data = Import-Csv C:\temp\ReleaseRequest2.csv $data | Where-Object { [DateTime]::ParseExact($_.expires, 'yyyy-MM-dd', $null) -ge $Today } | Select-Object expires
要是转换过程中报错,先检查CSV里的日期格式是否统一,调整ParseExact里的格式字符串匹配实际格式即可。
内容的提问来源于stack exchange,提问作者Chabango
相关产品推荐
相关产品推荐

