使用Powershell将文件从一个远程服务器复制到另一个远程服务器

时间:2012-10-29 21:23:52

标签: powershell powershell-v2.0

我正在尝试使用Powershell将文件从serverA复制到serverB。这两个服务器都属于我们的托管服务提供商,因此与将文件从本地盒复制到任一服务器相比,将文件从A复制到B的速度非常快。 我想我可以使用Powershell在serverA上运行远程命令并将文件复制到serverB。这就是我想出的:

$SourceServerName = "serverA"
$SourceContentPath = "\\serverA\c$\testSrc"
$DestinationContentPath = "\\serverB\c$\testDest"

Invoke-Command -ComputerName $SourceServerName -ScriptBlock {param ($SourcePath,$InstallPath) 
                Copy-Item -Path $SourcePath\* -Destination $InstallPath -Recurse
            } -ArgumentList $SourceContentPath, $DestinationContentPath

但是我收到错误“System.Management.Automation.RemoteException:拒绝访问路径'testDest'。

我是管理员,两个盒子上都配置了WinRM。如果我尝试在同一服务器内远程复制文件(即从\\ serverA \ c $ \ testSrc到\\ serverA \ c $ \ testDest),一切正常。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

Invoke-Command在您当前的用户(您当前登录到您的计算机的用户)下执行。您应该将-Credential的{​​{1}}参数设置为目标系统的管理员用户

答案 1 :(得分:0)

服务器A上的cmdlet不会像您一样执行。

两种可能的解决方案:

最简单的:

$SourceServerName = "serverA"
$SourceContentPath = "\\serverA\c$\testSrc"
$DestinationContentPath = "\\serverB\c$\testDest"
$cred = Get-Credential # input your username and password of serverB here

Invoke-Command -ComputerName $SourceServerName -ScriptBlock {param ($SourcePath,$InstallPath, $cred) 
            Copy-Item -Path $SourcePath\* -Destination $InstallPath -Recurse -Credential $cred
        } -ArgumentList $SourceContentPath, $DestinationContentPath, $cred

域用户解决方案:

如果您是域用户,并且可以控制这两台计算机,则可以通过本地计算机和serverA上的Enable-WSManCredSSP在PowerShell中启用CredSSP,然后在-Authentication CredSSP中添加Invoke-Command }。