Попытка автоматического копирования файлов с одного компьютера (не подключенного к сети) в сетевое местоположение с использованием моста с двумя сетевыми картами.
Мне удалось собрать этот сценарий из предыдущего поста на эту тему. Это прекрасно работает!
Проблема, с которой я столкнулся, заключается в том, что мне нужно отслеживать и копировать файлы из двух мест на ПК в два отдельных места на мостовом ПК
C: \ Source & rarr; C: \ Destination
и
C: \ Source2 & rarr; C: \ Destination2
Я попытался запустить 2 скрипта PowerShell с разными источниками и назначениями, однако он не позволяет второму запускаться, пока работает первый. Появляется следующее сообщение об ошибке:
Register-ObjectEvent : Cannot subscribe to the specified event. A subscriber
with the source identifier 'FileCreated' already exists.
At ****\PowerShell\movePowerhell - Copy.ps1:8 char:14
+ ... onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileC ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (System.IO.FileSystemWatcher:FileSystemWatcher) [Register-ObjectEvent], ArgumentException
+ FullyQualifiedErrorId : SUBSCRIBER_EXISTS,Microsoft.PowerShell.Commands.RegisterObjectEventCommand
Я полагаю, мне нужно отслеживать оба местоположения и копировать в оба места назначения в одном и том же сценарии?
Я попытался создать массив с источниками и получателями и дважды просмотреть код, но получаю ту же ошибку, что и выше.
$folder = "C:\Source"
$filter = "*.*"
requirements
$destination = "C:\Destination"
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Move-Item $path -Destination $destination -Force -Verbose # Force will overwrite files with same name
}