我正在尝试使用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),一切正常。
这样做的正确方法是什么?
答案 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
}。