У меня проблема с IO.FileSystemWatcher. У меня есть сценарий, который при копировании файлов в определенный каталог обрабатывает этот файл и копирует его в другую папку в сети. Но есть проблема, он начинает копировать, как только fsw запускает событие oncreate, которое генерирует ошибку (файл открыт), и я хочу, чтобы он запускался только после завершения копирования файла. Переименовать и удалить работает правильно. cloud.ps1 - это скрипт, который обрабатывает файл и копирует его. Это код сценария монитора:Powershell: выполнить скрипт после завершения копирования файлов
$watch = '\\HR-ZAG-SR-0011\ACO\ACO2\99. BOX'
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $watch
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$changed = Register-ObjectEvent $watcher "Changed" -Action {
# Write-Host "Changed: $($eventArgs.ChangeType)"
# $watch\cloud.ps1 modify "$($eventArgs.FullPath)"
}
$created = Register-ObjectEvent $watcher "Created" -Action {
Write-Host "Created: $($eventArgs.FullPath)"
.\cloud.ps1 create "$($eventArgs.FullPath)"
}
$deleted = Register-ObjectEvent $watcher "Deleted" -Action {
Write-Host "Deleted: $($eventArgs.FullPath)"
.\cloud.ps1 delete "$($eventArgs.FullPath)"
}
$renamed = Register-ObjectEvent $watcher "Renamed" -Action {
Write-Host "Renamed: $($eventArgs.OldFullPath) to $($eventArgs.FullPath)"
.\cloud.ps1 rename "$($eventArgs.OldFullPath)" "$($eventArgs.FullPath)"
}