2017-09-19 10 views
0

リモートサーバー上のローカルファイルをコピーするスクリプトを作成しました リモートの場所はC:\ pastで、ローカルファイルはc:\ pastのすべてのサブディレクトリにコピーする必要があります。 (つまり、C:\過去\ 1、C:\過去\ 2、C:\ past3、C:\ \ 4などなど。過去)リモートサーバーの場所のサブディレクトリにファイルをコピー

$PathFrom = "C:\ISO\ncis.exe" 
    $computers="192.168.42.117" 
    foreach ($computer in $computers) 
    { 
    $folders = Get-ChildItem "C:\past" -Directory 
    } 
    foreach ($folder in $folders.name) 
    { 

    #copy-item _path $PathFrom -ToSession $TargetSession -Destination "C:\past\$folder" -Recurse -ComputerName $computers 
    copy-item _path $PathFrom -ComputerName $computers -Destination "C:\past\$folder" -Recurse 
     } 

は、エラーの下に取得

enter Get-ChildItem : Cannot find path 'C:\past' because it does not 
exist. 
At line:3 char:14 
+ $folders = Get-ChildItem "C:\past" -Directory 
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : ObjectNotFound: (C:\past:String) [Get- 
ChildItem], ItemNotFoundException 
+ FullyQualifiedErrorId : 
PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommandcode 
here 
+0

はネットワークリソースです\\ 192.168.42.117 \ ...を実行して、そうでない場合は、リモートサーバーでPS Remotingが有効になっていますか?あなたが得ているエラーは、現在あなたがリモートサーバを見ているのではなく、あなたのスクリプトが実行されているローカルサーバ上にあるからです。エラーはまさにそのことを意味します。フォルダC:\ Pastを見つけることができません。 – ArcSet

+0

はい、\\ 192.168.42.117 \ –

+0

で届きます。\\ 192.168.42.117 \ c $ \ past .....その場所に到着できますか? – ArcSet

答えて

1

を持っていませんfor ...

$PathFrom = "C:\ISO\ncis.exe" 
$computers="192.168.42.117" 
foreach ($computer in $computers){ 
    Get-ChildItem "\\$computer\C$\past" -Directory | %{ Copy-Item -path $PathFrom -Destination $_.Fullname } 
} 
+0

以下のエラーを受け取ります。Copy-Item:コマンドは パイプライン入力または入力とその入力を受けないため、入力オブジェクトはコマンドのパラメータにバインドできませんプロパティがパイプライン入力を受け取るパラメータと一致しません。 ' –

+0

%{}を追加するのを忘れました。コードを編集しました。 – ArcSet

+0

@ArcSetありがとうございます。既存のファイルが上書きされますか? –

0
foreach ($folder in $folders.fullname) 

名前の代わりにFullnameを使用します。

これは意味をなさない、ローカルマシンからディレクトリを取得しています。あなたは、これはあなたが見て何をすべきUNCパスthrougnそれを得ることができたので

foreach ($computer in $computers) 
{ 
$folders = Get-ChildItem "C:\past" -Directory 
} 

コピー項目は、-ComputerNameパラメーターに

copy-item _path $PathFrom -ComputerName $computers 

チェック例 Microsoft Copy-Item

+0

はい、これは私が立ち往生した場所です。 C:\ pastはリモートディレクトリです(つまり、192.168.42.117にあります) –

関連する問題