使用PowerShell从localhost上的远程计算机复制文件

时间:2016-05-24 12:36:05

标签: powershell powershell-remoting powershell-v4.0

我正在尝试从localhost上的远程计算机复制一些文件,但会抛出以下错误消息:

[remoteHost_IP] Connecting to remote server <IP> failed with the following error message : Access is denied. For more information, see the 
about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OpenError: (<remoteHost_IP>:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken

在测试目的中,我使用以下脚本:

Param([string] $username, [string] $password)

$credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,(ConvertTo-SecureString $password -AsPlainText -Force)

$storage = "\\localhost's_IP\D$\testfile"

Invoke-Command -ComputerName <remote_comp'sIP> -Credential $credentials{ Copy-Item -Path "C:\Users\<localuser_memberOFlocalAdministratorsGroup>\desktop\testfile\asd.txt" -Destination $storage -Force -Recurse}

Enable-PSRemoting在两台主机上执行,并且每台主机都是另一台主机的TrustedHosts列表的一部分。

作为操作系统,我使用的是WS2012R2,当前版本的Powershell是4.0。

你能告诉我一些关于如何解决这个问题的想法吗?谢谢!

[编辑]

正如我所说,我正在使用PowerShell 4.0(在我的情况下,还不能升级到最新版本)。无论如何,我已经尝试了@vonPryz建议,现在我看不到任何错误消息,但文件仍未复制到localhost上。这是我的代码[添加内容部分工作正常]:

    $sessiona = New-PSSession -Name sesegnon -ComputerName "10.bla-bla" -Credential $credentials

    $any_error = Invoke-Command -Session $sessiona -ScriptBlock {
              Add-Content -Path "D:\path\int.txt" -Value "message"
              Copy-Item -Path "D:\path\asd.txt" -Destination $storage -Force
              $x = $error[0] | Out-String
              return $x    
    }

    Write-Host $any_error

1 个答案:

答案 0 :(得分:0)

如果您安装了latest PowerShell version,则对于Copy-Item cmdlet,使用新参数-Tosession-FromSession非常简单。

您只需使用New-PsSession cmdlet创建会话,并将该会话名称用作-ToSession-FromSession参数的参数。

#Example
$Session = New-PsSession -ComputerName Server1
Copy-Item -Path <local path of the server1> -FromSession $Session -DestinationPath 'c:\Path'

此致

Kvprasoon