PowerShellはおろか.Net系ほとんど触れた事ありませんが、ほぼパクリで書いております。
あまり知識がないまま質問となってしまうと思いますが、ご了承いただければ幸いです。
したいこと
- PowerShellでファイルの監視スクリプトをテスト的に作成したい。
- ファイルの監視は削除イベントが発生した際に、終了させたい。
- ファイルが変更されたイベントも設定するが、こちらの場合はサブスクライバは削除しない。
解決したいこと
- FileSystemWatcherの監視で、ファイルが削除されたイベントが発生した時、既に登録したサブスクライバを削除したいです
- 単純に、削除のイベントで発火するアクション時に、自身(削除)と変更のサブスクライバ の登録を削除すればいいのかと思いましたが、うまくゆきません。
- どうしてか原因も知りたいです。差し支えなければご教授いただきたいです。
PowerShell
1$wait=New-Object System.IO.FileSystemWatcher 2$wait.NotifyFilter=[IO.NotifyFilters]::LastWrite -bor [IO.NotifyFilters]::FileName 3$wait.Path="D:\hoge\fuga" 4$wait.Filter="*.txt" 5$wait.IncludeSubdirectories=$false 6$si_ch="si_ch" 7$si_dl="si_dl" 8 9$act_ch = { 10 $t= $Event.TimeGenerated 11 $f= $Event.SourceEventArgs 12 13 [string]$lated_time= $t.ToString("yy/MM/dd HH:mm:ss.f") 14 15 if($lated_time -ne $chk_time){ 16 write-host ($f.Name) 17 [string]$chk_time= $lated_time 18 } 19} 20 21$act_dl = { 22 write-host ("unregistered") 23 Unregister-Event -SourceIdentifier $si_ch 24 Unregister-Event -SourceIdentifier $si_dl 25} 26 27Register-ObjectEvent -InputObject $wait -SourceIdentifier $si_ch -EventName "Changed" -Action $act_ch 28Register-ObjectEvent -InputObject $wait -SourceIdentifier $si_dl -EventName "Deleted" -Action $act_dl
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/18 01:43