【问题标题】:Copy-File in scriptblock can't find path脚本块中的复制文件找不到路径
【发布时间】:2017-02-08 15:35:22
【问题描述】:

我已经实现了一个 PS 脚本,可以同时在多个服务器上部署代码。在这里,我需要将一些源文件从一台服务器复制到另一台服务器。请看下面的代码:

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:\

iwflO1 运行良好,它是我运行脚本的根服务器,但对于其他服务器,它给了我类似的错误

找不到路径“\iwdflO1\C$\Deploy\bin”,因为它不存在。

但如果我登录到 iwflO2 或任何其他服务器并手动点击路径,它工作正常。

【问题讨论】:

  • 这看起来像是双跳问题。这是一个technet blog,有一些变通方法。
  • 看看这个看看是不是类似stackoverflow.com/a/23625969/5233410
  • Ben 怎么会出现双跳问题?
  • @RanadipDutta localhost -> Invoke-Command -> 第一跳 -> UNC 路径 -> 第二跳
  • 我真的不认为它在逻辑上实际上是双重希望。理论上是的。双跳通常意味着从远程计算机跳转到另一台计算机(主要使用 Invoke 和 pssession)。在这里它直接与管理员共享。无论如何,我支持你@AnsgarWiechers。 :)

标签: powershell powershell-2.0 powershell-3.0 powershell-4.0 powershell-remoting


【解决方案1】:

我可以看到错误是块:

而不是这个:

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

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

这样做:

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

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

如果我对服务器名称进行硬编码(在我的本地测试),这可以正常工作

由于您使用的是管理员共享,请直接尝试:

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

注意:您必须指定文件。否则你 get-childitem -recurse 在源文件夹中并直接放在目标中。

希望对你有帮助。

【讨论】:

  • 感谢回复!!是的,我已经完成了,但仍然面临同样的问题
  • 还有一件事。 "\\iwdflO1\C$\Deploy\bin" 放一个反斜杠。您所指的位置位于 bin 下方,因此 "\\iwdflO1\C$\Deploy\bin\" 这应该可以解决您的问题。 PS 无法选择源路径
  • 这似乎是合乎逻辑的事情。如果您使用的是管理共享,那么为什么要使用调用?直接可以使用copy-item对吧??
  • @ShianJA:改变了答案。请检查一次并尝试实施。您没有提供文件名,因为它正在寻找特定文件,结果似乎路径无效。
  • @ShianJA 请查看 BenH 在他对您的问题的评论中提供的链接。鉴于这些症状,这实际上可以保证是第二跳问题。
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 2010-10-22
  • 2020-04-13
  • 2021-03-15
  • 1970-01-01
  • 2022-10-17
  • 2020-10-21
  • 1970-01-01
相关资源
最近更新 更多