尝试使用带有两个网卡的桥接PC自动将文件从一台PC(不在网络上)复制到网络位置。
我已经设法将此脚本放在上一篇关于该主题的帖子中。这很棒!
我遇到的问题是我需要监控PC上两个位置的文件并将其复制到桥接PC上的两个不同位置
C:\ Source→C:\ Destination
和
C:\ Source2→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
}
答案 0 :(得分:2)
如有疑问,请阅读documentation(强调我的):
<强>
-SourceIdentifier
强>指定您为订阅选择的名称。 您选择的名称在当前会话中必须是唯一的。 默认值是Windows PowerShell分配的GUID。
避免此问题的最简单方法是不指定源标识符。如果省略参数,PowerShell将自动将GUID设置为源标识符,这将避免名称冲突。