我正在使用FileSystemWatcher监控一个文件夹,该文件夹用于扫描文档。发现有新文件时,它将发送电子邮件通知某人。目前运行良好,但有时(不是每个文件)在新文件上触发2或3次,并为同一文件发送2-3封电子邮件。我猜想这可能与扫描仪创建文件的方式有关等等。
我正试图找出一种方法来保护免受此类情况的影响,以确保每个文件只发送一封电子邮件。任何建议都将不胜感激。
我正试图找出一种方法来保护免受此类情况的影响,以确保每个文件只发送一封电子邮件。任何建议都将不胜感激。
$PathToMonitor = "\\path\to\folder"
$FileSystemWatcher = New-Object System.IO.FileSystemWatcher
$FileSystemWatcher.Path = $PathToMonitor
$FileSystemWatcher.Filter = "*.*"
$FileSystemWatcher.IncludeSubdirectories = $false
$FileSystemWatcher.EnableRaisingEvents = $true
$Action = {
if ($EventArgs.Name -notlike "*.pdf" -and $EventArgs.Name -notlike "*.tif") {
return
}
$details = $event.SourceEventArgs
$Name = $details.Name
$Timestamp = $event.TimeGenerated
$text = "{0} was submitted on {1}." -f $Name, $Timestamp
$FromAddress = "Email1 <email1@email.com>"
$ToAddress = "Email2 <Email2@email.com>"
$Subject = "New File"
$SMTPserver = "123.4.5.678"
Send-MailMessage -From $FromAddress -To $ToAddress -Subject $Subject -Body $text -SmtpServer $SMTPserver
}
$handlers = . {
Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Created -Action $Action -SourceIdentifier FSCreateConsumer
}
try {
do {
Wait-Event -Timeout 5
} while ($true)
}
finally {
Unregister-Event -SourceIdentifier FSCreateConsumer
$handlers | Remove-Job
$FileSystemWatcher.EnableRaisingEvents = $false
$FileSystemWatcher.Dispose()
}