我有一个目录被一些程序填满。我想监视此目录并检查文件是否不断添加到目录中。如果例如5分钟没有文件被添加到目录中,我希望得到通知。文件也被删除但我只需要关心新文件 剧本每三小时运行约20分钟 FileSystemWatcher的代码:
<
我不知道如何能够实现这一目标,并且感谢所有的投入。
答案 0 :(得分:1)
PowerShell脚本不适合连续运行并报告事件。
实现目标的一种方法是使用这样的脚本:
[DateTime] $LastWriteTime = (Get-ChildItem -Path "C:\temp\test" -File | Sort-Object LastWriteTime | Select -Last 1).LastWriteTime
if ($LastWriteTime -le (Get-Date).AddMinutes(-5))
{
Write-Output "No files added in the last 5 minutes"
# notify me...
}
并安排Windows任务计划程序中的脚本每五分钟运行一次。
它找到目录中编辑的最新文件。
不需要FileSystemWatcher
答案 1 :(得分:1)
您可以通过Task Scheduler
运行单独的脚本,该脚本使用您的日志文件查看最近5分钟内是否创建了文件。
$log = Get-Content -Path T:\log.txt
$currentTime = Get-date
$5minutesAgo = $currentTime.AddMinutes(-5)
$FileAdded = $false
foreach($time in $log){
if((get-date $time) -gt $5minutesAgo){
$FileAdded = $true
}
}
If($FileAdded) {
Write-host "File was added in the last 5mins"
} Else {
Write-host "No file added in the last 5mins"
# Add in email code here
}
这将逐行浏览您的日志文件,并检查时间是否在最后一个文件分钟内。然后,如果添加了文件,它会将变量$FileAdded
设置为$true
。然后,您可以使用此选项来决定是否应发送电子邮件。
注意:如果经常运行此选项,请确保定期滚动日志文件以保持处理速度不变。由于您未在日志文件中包含日期,因此您必须每天至少翻转一次日志文件。