首页 > 解决方案 > Powershell 比较 CSV 中的日期和今天的日期

问题描述

我有一个 csv 文件,其中最后一次约会的日期格式为 30-01-2018。项目名称 客户编号 客户姓名 上次约会日期 CCP nr CCP 姓氏 CCP 邮件

如果上次约会的日期是 10 个月前,我想发送一封电子邮件,以便他们有 2 个月的时间安排新的约会。邮件应该转到 ccp 邮件,如果项目名称为空。我有一个看起来不错的脚本,但我无法获取日期日期格式。

我到处阅读有关 parse 的信息,但如果我不转换它,我不会在过去两个月内获得随机用户,如果我尝试转换它,我会收到带有“3”参数的异常调用“ParseExact”: “字符串未被识别为有效的日期时间。”

$CheckDate = (Get-Date).Addmonths(-10).tostring("dd-MM-yyyy")
$data = Import-Csv -Path '.\CCPt.csv' -Delimiter ";" 
foreach ($User in $data)  {

$Project = $user.'Project name'
$clientname = $user.'Client name'
$datelast = $user.'Date last appointment'
$mail = $user.'CCP mail'


$from = "mail@domain.com" 
$smtp = "smtp.domain.com" 
$Subject = "Reminder"
$body = "Client $clientname has to make a new appointment"
$projmail = Get-ADUser -filter { Name -eq $Project } -Properties * | select -    ExpandProperty mail 

$Convertdatelast = ([datetime]::ParseExact($datelast,"dd-MM-yyyy",$null))

If ($datelast -lt $CheckDate) {send-MailMessage -SmtpServer $smtp -To $mail -    cc -From $from -Subject $subject -Body $body -BodyAsHtml }
}

标签: powershell

解决方案


您不必将当前日期转换为字符串进行比较,也不必使用如此复杂的解析方法。

$CheckDate = (Get-Date).AddMonths(-10)
$datelast = Get-Date ($user.'Date last appointment') #given the format is something like "30-01-2018"

然后,您只需将两个变量与$datelast -lt $CheckDate.


推荐阅读