2016-05-24 5 views
0

Я пытаюсь скопировать некоторые файлы с удаленного компьютера на локальном хосте, но следующее сообщение об ошибке брошено:Копирование файлов с удаленного компьютера на локальном хосте с помощью PowerShell

[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. Вот мой код [Add-Content часть работает отлично]:

$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 
+2

ли интерактивная 'Enter-PSSession' работать? – vonPryz

+0

Когда вы используете Invoke-Command для доступа к сетевым ресурсам, вы должны использовать аутентификацию CredSSP вместо Default. «ПРЕДУПРЕЖДЕНИЕ: Аутентификация службы безопасности учетных данных (CredSSP) , в которой учетные данные пользователя передаются удаленному компьютеру , который должен быть аутентифицирован, предназначен для команд, которым требуется аутентификация на нескольких ресурсах, таких как доступ к удаленному .Этот механизм увеличивает риск безопасности удаленной операции . " Полный TechNet [ссылка] (https://technet.microsoft.com/it-it/library/hh849719.aspx) –

ответ

0

Если у вас есть latest PowerShell version установлен, его очень просто с новым параметром -Tosession или -FromSession для Copy-Item командлет.

Вам просто нужно создать сеанс, используя командлет New-PsSession, и использовать это имя сеанса в качестве аргумента для параметра или -FromSession.

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

С уважением,

Kvprasoon

+0

Обратите внимание на эту проблему с параметрами fromsession и tosession: http://stackoverflow.com/questions/40840269 – mhu