Question Accès refusé avec Invoke-command

Plus d'informations
il y a 9 ans 9 mois #21965 par ROUSSEAU
Bonjour,

Je souhaite exécuter un script sur un serveur à distance.
(Une simple copie pour démarrer et par la suite l'exécution d'un .ps1 pour installer une application)

Voici le script que j’exécute :

[code:1]
$RemoteComputer=\"server1\"
New-PSSession -ComputerName $RemoteComputer
Enter-PSSession -ComputerName $RemoteComputer
Copy-Item \"\\localhost\temp\test.txt\" -Destination \"C:\temp\"[/code:1]

Réponse :

Copy-Item : Accès refusé
Copy-Item : Impossible de trouver le chemin d'accès


Info :
- Je suis admin du domaine.
- Depuis le serveur distant j’accède bien au fichier via le partage.
- les serveurs sont en 2012R2 donc WinRM est activé.

Manuellement la copie ou le lancement du .ps1 depuis le serveur distant ce fait correctement, y a t-il une configuration que j'aurais oublié de faire ?

Merci de votre aide. :)<br><br>Message édité par: Arnaud, à: 17/06/16 16:04

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21967 par Philippe
salut vesty

y a t-il une configuration que j'aurais oublié de faire ?

non ou je ne vois pas quoi
mais tu manque de logique ;)

new-pssession ouvre une session à distance sur un serveur

enter-pssession démarre une session à distance interactive sur la console local pour l'utilisateur pas pour le script !!!

et donc copy-item s'exécute que localement

pour les sessions à distance, il te ouvrir la session (new-pssession) et gardé le numero de session renvoyer !!!
[code:1]$idsession = New-PSSession -ComputerName $RemoteComputer[/code:1]

puis tu exécute ta commande à distance avec ces invoke-command :
[code:1]Invoke-Command -ScriptBlock {Copy-Item \&quot;\localhosttemptest.txt\&quot; -Destination \&quot;C:temp\&quot;} -Session $idsession[/code:1]

et enfin on n'oublie pas à la fin de fermer la session sinon au bout de 10 fois plus d'ouverture de session
[code:1]Remove-PSSession $idsession[/code:1]

pour info pour le copy il te manque serveur ou le fichier ce trouve, du genre :
[code:1]Copy-Item \&quot;\\le_serveur_de_fichier\le_partage\le_dossier\le_fichier.txt\&quot; -Destination \&quot;C:\temp\&quot;[/code:1]

mais pour moi, si tu est admin du domaine tu n'a pas besoin de tous ça. un simple copy suffit :
[code:1]Copy-Item \&quot;c:\le_partage\le_dossier\le_fichier.txt\&quot; -Destination \&quot;\\$RemoteComputer\C$\temp\&quot;[/code:1]<br><br>Message édité par: 6ratgus, à: 17/06/16 09:50

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21968 par ROUSSEAU
Copy-item n'est qu'un exemple car en effet je peux le faire sans l'invoke-command.

J'ai également testé via ton exemple, j'ai le même problème.

[code:1]
$RemoteComputer=\&quot;server1\&quot;
$idsession = New-PSSession -ComputerName $RemoteComputer
Invoke-Command -ScriptBlock {Copy-Item \&quot;\\serverlocal\dossier\test.txt\&quot; -Destination \&quot;C:\temp\&quot;} -Session $idsession[/code:1]

----

Mon but est d'exécuter un script .ps1 sur le server1 (serveur distant)

Test avec Invoke-Command sans PSsession :

[code:1]
Invoke-Command -ComputerName $RemoteComputer -ScriptBlock {\&quot;D:\dossier\monscript.ps1\&quot;}[/code:1]

Rien de ne ce passe (aucun message d'erreur) mais l’installation ne ce fait pas pour autant.:(

Info
L'exécution manuellement de \&quot;monscript.ps1\&quot; sur le serveur distant fonctionne bien. (L'application est bien installé)<br><br>Message édité par: Arnaud, à: 17/06/16 16:05

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21976 par Philippe
il semble que les niveau de sécurité de Windows ai changé

l'option -EnableNetworkAccess de new-pssession ou invoke-command ne fonctionne plus pour moi !!!??

test si cette solution fonctionne pour toi :

[code:1]Invoke-Command -ComputerName \&quot;pc-test\&quot; -Credential $cred -ScriptBlock {Copy-Item -Path \&quot;\\server\patage\fichier\&quot; -Destination \&quot;C:\temp\\&quot;} -EnableNetworkAccess
[/code:1]


sinon tu fait la copy depuis ton poste ou serveur puis tu exécute l'install après à distance via start-process

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21979 par Arnaud Petitjean
Hello !

Je pense que le problème se situe autour de la problématique du \&quot;double saut\&quot; (double hop in english).

Essaie de modifier ton script pour faire des copies d'un répertoire local à un autre sur le même serveur sans utiliser la syntaxe
[code:1]\\monserveur\monDossier[/code:1], mais plutôt
[code:1]
Invoke-Command -ComputerName \&quot;pc-test\&quot; -Credential $cred -ScriptBlock {Copy-Item -Path \&quot;C:\test\fichier1.txt\&quot; -Destination \&quot;C:\temp\\&quot;}[/code:1]

et tu seras fixé.

Si c'est bien le cas, ce que je crois, il te faudra faire de la délégation de credentials (CredSSP).

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #21982 par Philippe
salut Arnaud

Je pense que le problème se situe autour de la problématique du \&quot;double saut\&quot; (double hop in english).

oui c'est ce que je pensé et je pensé que l'option EnableNetworkAccess réglé le problème !
mais il semble que non :(

jamais utilisé credssp merci Arnaud
ce blog semble un bon guide pour credssp

j'avais aussi trouver sur le blog une solution a voir si ça aide

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.061 secondes
Propulsé par Kunena