たくさんのフォルダに変更があったときに(メールを送信するなど)、いくつかのことをしたいと思います。それは多かれ少なかれ働いています。問題は、通知が多すぎることです。私はそれをハックして追跡し、重複を無視できることを知っていますが、それを正常に機能させる方法があるはずです。
コード:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "s:\Reporting\Report Output Files\"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$changed = Register-ObjectEvent $watcher "Changed" -Action {
write-host "Changed: $($eventArgs.FullPath)"
}
$created = Register-ObjectEvent $watcher "Created" -Action {
write-host "Created: $($eventArgs.FullPath)"
}
while($true) {
start-sleep -s 2
}
ファイルを作成したときの結果:
Created: s:\Reporting\Report Output Files\IT\Scheduled_IO.log
Changed: s:\Reporting\Report Output Files\IT\Scheduled_IO.log
Changed: s:\Reporting\Report Output Files\IT\Scheduled_IO.log
Changed: s:\Reporting\Report Output Files\IT\Scheduled_IO.log
Changed: s:\Reporting\Report Output Files\IT
実際にはファイルが作成されているだけなのに、なぜ3つの変更が行われるのか(ディレクトリレベルの変更が行われる理由がわかります)はわかりません。ファイルを変更すると、dupも変更されます。