2016-05-24 2 views
0

Je suis en train de copier des fichiers à partir d'un ordinateur distant sur l'hôte local, mais le message d'erreur suivant est lancé:Copie de fichiers à partir d'un ordinateur distant sur l'hôte local en utilisant 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 

Dans des fins de test, je me sers du script suivant:

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} 

l'option Activer PSRemoting a été exécuté sur les deux hôtes ainsi que chaque hôte fait partie de la liste TrustedHosts de l'autre hôte.

En tant que système d'exploitation, j'utilise WS2012R2 et la version actuelle de Powershell est 4.0.

Pouvez-vous s'il vous plaît me donner quelques idées sur la façon dont je peux résoudre ce problème? Merci!

[Modifier]

Comme je l'ai dit, je travaille avec PowerShell 4.0 (une mise à niveau vers la dernière version est pas encore possible dans mon cas). De toute façon, j'ai essayé @vonPryz suggestion et maintenant je ne peux pas voir un message d'erreur, mais le fichier n'est toujours pas copié sur le localhost. Voici mon code [partie Add-Content fonctionne très bien]:

$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

Est interactif 'Enter-PSSession' travail? – vonPryz

+0

Lorsque vous utilisez Invoke-Command pour accéder aux ressources réseau, vous devez utiliser l'authentification CredSSP au lieu de Default. "ATTENTION: l'authentification du fournisseur de prise en charge de sécurité Credential, dans laquelle les informations d'authentification de l'utilisateur sont transmises à un ordinateur distant, est destinée aux commandes nécessitant l'authentification sur plusieurs ressources, par exemple l'accès à une télécommande. partage réseau.Ce mécanisme augmente le risque de sécurité de l'opération à distance . " TechNet complet [link] (https://technet.microsoft.com/it-it/library/hh849719.aspx) –

Répondre

0

Si vous avez latest PowerShell version installé, il est très simple avec un nouveau paramètre -Tosession ou -FromSession pour cmdlet Copy-Item.

Vous avez juste besoin de créer une session en utilisant la cmdlet New-PsSession et d'utiliser ce nom de session comme argument pour le paramètre -ToSession ou -FromSession.

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

Cordialement,

Kvprasoon

+0

Veuillez noter ce problème avec les paramètres fromsession et tosession: http://stackoverflow.com/questions/40840269 – mhu