2017-01-28 2 views
0

копия не работает. Когда я заменяю что-то вроде Send-MailMessage, которое, похоже, запускается, когда я бросаю файл в «\ sharerc \ test», но часть экземпляра копии не работает.Powershell System.IO.FileSystemWatcher copy-item

$watcher = New-Object System.IO.FileSystemWatcher 
$watcher.Path = "\\pc\sharesrc\test" 
$watcher.Filter = "*.*" 

$Src = "\\pc\sharesrc\test" 
$Dst = "\\pc\sharedst\test" 

$action = { copy-item $Src\*.* $Dst } 

Register-ObjectEvent $watcher "Created" -Action $action 

while ($true) {sleep 5} 

ответ

0

Declare и ссылки на СРК, и В вары как глобальные, например:

$Global:src = 'xxxx'; 
$Global:dst = 'xxxx'; 

copy-item $global:src\*.* $global:dst; 
+0

Большое вам спасибо! Как вы могли догадаться, я все еще многому учусь об этом. Это сделал трюк. – JPYoungNet

+0

Нет проблем. Global делает переменную доступной для всего процесса powershell.exe. Другие области - сценарий, локальный и частный. Подробнее здесь: http://powershellprimer.com/html/0006.html#6_10 –

0

с вашим кодом скопировать все файлы каждый раз, вы можете это сделать, если вы хотите скопировать только что созданный файл, и разрешите в то же самое время вашу проблему:

$watcher = New-Object System.IO.FileSystemWatcher 
$watcher.Path = "\\pc\sharesrc\test" 
$watcher.Filter = "*.*"  

$action = { 
$path = $Event.SourceEventArgs.FullPath ; 
copy-item $path "\\pc\sharedst\test" 
} 

Register-ObjectEvent $watcher "Created" -Action $action 

while ($true) {sleep 5} 

Unregister-Event $watcher 
+0

Спасибо. У меня на самом деле есть более сложный набор инструкций для копирования файлов, написанных через определенное время, и только если они не существуют на целевом сервере. Я просто использовал то, что выше для простоты. – JPYoungNet

+0

нажмите, если вы можете;) – Esperento57

Смежные вопросы