Новое в 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
...
Есть ли хороший образец или лучший способ написать это, чтобы уменьшить количество кода?
Оберните избыточный код в функции. Затем вызовите эту функцию, как вам часто нужно. –
В принципе, мне интересно, есть ли идиоматический способ сделать это. Например, как вы обрабатываете область видимости переменной '$ watcher' и передаете параметры и т. Д. – jmreicha