ファイルの作成ディレクトリを監視しようとしています。ファイルが作成された場合は、ログファイルに1行書き出し、フォルダの監視を続けます。私は以下のコードを使用していますが、ログファイルには二重のエントリがあります。Usinf System.IO.FileSystemWatcherファイルの作成時にログファイルに書き込む
$action
にブレークを入れると、次のイベントを待つ前に2回実行されていることがわかります。そのため、2行がログファイルに書き込まれます。
どうしたのですか?
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\test-folder"
$watcher.Filter = "*FINAL*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$watcher.InternalBufferSize = 16384
### DEFINE ACTIONS AFTER A EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-Content "C:\test-folder\created.log" -value $logline
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY
$created = Register-ObjectEvent $watcher "Created" -Action $action
# $changed = Register-ObjectEvent $watcher "Changed" -Action $action
# $deleted = Register-ObjectEvent $watcher "Deleted" -Action $action
# $renamed = Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
ログファイルには、次のようになります...
05/03/2016 11:25:16, Created, C:\test-folder\test1-FINAL-.txt 05/03/2016 11:25:16, Created, C:\test-folder\test1-FINAL-.txt 05/03/2016 11:26:10, Created, C:\test-folder\test2-FINAL-.txt 05/03/2016 11:26:10, Created, C:\test-folder\test2-FINAL-.txt
私によく見えます。ウォッチャーを2回登録していないことは確かですか? –
erm、わからない - もし私がpsシェルを閉じて再オープンするとウォッチャーがクリアされるはずですか? - そして、もし私が "writeとread host"を$ action {中でブレークとして走らせれば、それは2回繰り返すことができます。 ... – grizlyadams