我試圖在網絡共享上創建一個監視文件夾,它只是將文件(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