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' 변수에 대한 범위를 처리하고 params를 전달하는 방법은 무엇입니까? – jmreicha