2017-01-28 8 views
0

コピーアイテムが動作していません。私がSend-MailMessageのようなものに置き換えると、ファイルを "\ sharesrc \ test"にドロップすると実行されたように見えますが、コピーアイテムの部分は表示されません。Powershell System.IO.FileSystemWatcherコピーアイテム

$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

宣言し、例えば、グローバルとしてsrcとdstのVARSを参照:あなたのコードで

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

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

ありがとうございました!あなたが推測したように、私はまだこれについて多くのことを学んでいます。これはトリックでした。 – JPYoungNet

+0

問題ありません。グローバル変数は、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

関連する問題