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