我试图在网络共享上创建一个监视文件夹,它只是将文件(300mb-20gb)大小复制到目标文件夹。 FileSystemWatcher
和订阅对小文件(即1-3kb)非常有用。但是,较大的文件不会复制。我确实看到在详细流中触发了一个副本,但没有文件被复制到目标文件夹。Copy-Item不适用于FileSystemWatcher
$Folder = "\\10.11.233.91\vol_tx01\delivered_media"
$Filter = "*.mxf"
$destination = "C:\Users\Leeds TX 11\Desktop\support\Testy"
$Watcher = New-Object IO.FileSystemWatcher $Folder, $Filter -Property @{
NotifyFilter = [IO.NotifyFilters]'Filename, LastAccess'
}
$onCreated = Register-ObjectEvent $Watcher Created -SourceIdentifier `
FileCreated -Action {
$path = $event.SourceEventArgs.FullPath
$name = $event.SourceEventArgs.Name
$ChangeType = $event.SourceEventargs.ChangeType
$Timestamp = $event.TimeGenerated
Write-Host "The file '$name' was $ChangeType at $Timestamp"
Copy-Item $path -Destination $destination -Force -Recurse -Verbose
}
您在最后一次访问文件时触发,而不是最后一次写入文件。由于复制项目将访问该文件,我猜测这会导致它跳闸。在'NotifyFilter'中使用'LastWrite' .. – JohnLBevan
谢谢John,我试着将LastWrite作为NotifyFilter。它仍然不会复制超过2-3kb的任何文件。 – user6705306
另一个想法;触发上述脚本中的Copy-Item时是否只能看到此问题;或者在使用Copy-Item从同一个源到目的地时看到相同的问题?是那些工作和那些不是他们的文件大小之间的唯一区别?对不起,有这么多的问题;可悲的是,我还没有机会为自己测试你的代码,或者对FSW没有足够的了解,没有测试就发现任何问题。 – JohnLBevan