Powershell の新機能。ディレクトリ内のファイルを監視し、変更をコンソールに報告するスクリプトを作成しています。
FS の「ウォッチャー」に使用しているスクリプト ブロックにかなりのコード重複があることに気付きました。
スクリプト ブロックのスニペットを次に示します。必要に応じて、スクリプト全体を投稿できます。少し長くなり、もう少し進行中です。
# Filter all files
$filter = "*.*"
$watcher = New-Object IO.FileSystemWatcher $watchdir, $filter -Property @{
IncludeSubdirectories = $true
EnableRaisingEvents = $true
}
# File creation
Register-ObjectEvent $watcher Created -SourceIdentifier Created -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$message = "The file '$name' was '$changeType' at '$timeStamp'"
Write-Host $message
}
# File change
Register-ObjectEvent $watcher Changed -SourceIdentifier Changed -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$message = "The file '$name' was '$changeType' at '$timeStamp'"
Write-Host $message
}
# File rename
...
# File delete
...
コードの量を減らすために、これを記述する良いパターンまたはより良い方法はありますか?