0

私は複数のサーバーにコードを同時に展開するPSスクリプトを実装しました。ここでは、ソースファイルをあるサーバーから別のサーバーにコピーする必要があります。以下のコードを参照してください:それはiwflO1の罰金働いてscriptblockのコピーファイルがパスを見つけることができません

for ($i=1; $i -le 5; $i++) { 
    $serverName="iwflO" + $i 
    $sourceFile="\\iwdflO1\C$\Deploy\bin" 
    $destination="\\$serverName\C$\Program Files (X86)\Shian\MyService\bin\" 
    $Myblock = { 
     Param{$sourceFile,$destination) 
     Copy-Item -Force -Recurse $sourceFile -Destination $destination 
    } 
    $result = Invoke-Command -ComputerName $ServerName -Credential "shian" -ScriptBlock $Myblock -ArgumentList $sourceFile,$destination; 
    $result; 
} 
cd c:\ 

私は、スクリプトを実行している場所からのルートサーバーがあるが、他のサーバーのためにそれは私に

のようなエラーを与えている

パスを見つけることができません」 \ iwdflO1 \ C $ \ Deploy \ bin "が存在しないためです。

しかし、iwflO2や他のサーバーにログインして手動でパスを手動でヒットした場合は、これに代えて

$Myblock={param{$sourceFile,$destination) 

copy-Item -Force -Recurse $sourceFile -Destination $destination 
} 

これを行う:

+4

これはダブルホップの問題のようです。いくつかの回避策を講じた[テクニカルブログ](https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/)です。 – BenH

+0

これを見て、それが似ていないかどうかを確認してくださいhttp://stackoverflow.com/a/23625969/5233410 – Nkosi

+0

どのようにダブルホップの問題ベンそれを来る? –

答えて

0

私は間違いを見ることができますがブロックである私は、サーバー名をハードコーディングしていた場合

$Myblock={param($sourceFile,$destination) 

copy-Item -Force -Recurse $sourceFile -Destination $destination 
} 

これは正常に動作しています(私のローカルでテスト済み)

admin共有を使用しているので、直接この試してみてください:

Copy-Item -Path \\serverA\c$\programs\temp\test.txt -Destination \\serverB\c$\programs\temp\test.txt; 

注:あなたが持っているにファイルを指定します。それ以外の場合は、get-childitem -recurseをソースフォルダ内に置き、直接宛先に配置します。

希望します。

+0

お返事ありがとうございます!ええ、私はそれをやったが、同じ問題に直面している –

+1

もう一つ。 '' \\ iwdflO1 \ C $ \ Deploy \ bin "'バックスラッシュを入れます。あなたが参照している場所はbinの下にありますので、 '\\ iwdflO1 \ C $ \ Deploy \ bin \" 'それはあなたの問題を解決するはずです。 PSはソースパスを選択することができません –

+0

それは論理的なものです。管理共有を使用している場合、なぜ呼び出すのですか?直接コピー項目を使用することはできますか? –

関連する問題