1

我正在尝试使用 Powershell 将文件从服务器 A 复制到服务器 B。两台服务器都属于我们的托管服务提供商,因此与将文件从本地机器复制到任一服务器相比,将文件从 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),一切正常。

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

4

2 回答 2

0

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

于 2012-10-30T08:06:09.270 回答
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

域用户解决方案:

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

于 2012-10-31T11:25:55.587 回答