Question Copie de fichier sur serveur distant

Plus d'informations
il y a 11 ans 3 mois #18544 par Luca
Bonjour,

Je cherche à transférer des fichiers sur des serveurs dans mon réseau local.
La liste des noms de serveurs sont dans complist1.txt qui est contenu dans ma variable $Computers



[code:1]<#
Transfert de fichier
#>
Import-Module bitstransfer

$cred = Get-Credential

# Point the script to the text file ei c:\list.txt
$Computers = \"C:\Users\X\Desktop\complist1.txt\"

# sets the varible for the file location ei c:\temp\ThisFile.exe
$Source = \"C:\Users\X\Desktop\Ping.ps1\"

# sets the varible for the file destination
$Destination = Read-Host \"Destination path\"


# displays the computer names on screen
Get-Content $Computers | foreach {Start-BitsTransfer $Source $_\c$\$Destination -Credential $cred }
[/code:1]

Quand je lance mon script il m'indique que le chemin d'accès n'est pas trouvé :
[code:1]Start-BitsTransfer : Impossible de trouver le chemin d'accès «*\\XX\c$\Program Files\NSClient++\scripts\ping_casar*», car il n'existe pas.
Au niveau de C:\Users\lcristante\Desktop\copyfiles.ps1*: 19 Caractère*: 53
+ Get-Content $Computers | foreach {Start-BitsTransfer <<<< $Source $_\c$\$Destination -Credential $cred }
+ CategoryInfo : ObjectNotFound: (\\XX\c...ipts\ping_casar:«»String) [Start-BitsTransfer], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.BackgroundIntelligentTransfer.Management.NewBitsTransferCommand[/code:1]

Or quand j'utilise le chemin :

[code:1]\"\\XX\c$\Program Files\NSClient++\scripts\ping_casar\"[/code:1]

via l'explorateur, j'accède aux dossiers désirés ...
Comment résoudre ce problème ?

De plus, lorsque la fenêtre de l'explorateur windows est ouverte vers le chemin, le transfert a fonctionné pour ce serveur.
Mais je vais pas m'amuser à ouvrir 20 fenêtres pour exécuter mon script, sinon il n'a plus d’intérêt ...

Merci !

Message édité par: talkk, à: 8/12/14 13:40

Message édité par: Arnaud, à: 8/12/14 13:57<br><br>Message édité par: Arnaud, à: 8/12/14 13:58

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

Plus d'informations
il y a 11 ans 3 mois #18545 par Arnaud Petitjean
Salut !

Il se pourrait que le problème se situe au niveau de la concaténation de ta chaine de caractères.

Je te suggère dans un 1er temps de les afficher pour voir ce que cela donne.

Par exemple, tu pourrais transformer ton code en:
[code:1]Get-Content $Computers | foreach {Write-Host \&quot;Source: $Source Dest: $_\c`$\$Destination\&quot;}[/code:1]

Tu noteras l'utilisation du caractère backtick \&quot;`\&quot; pour indiquer à PowerShell de ne pas interpréter le $ comme étant une variable.

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 11 ans 3 mois #18546 par Luca
Merci de ta réponse :)

J'avais déjà effectué ce test sans le backtick, et j'ai obtenu un résultat similaire cette fois ci.

D'un autre coté , les chemins sont forcément correct puisque si j'ouvre une fenetre windows pointant vers le chemin de destination d'un des serveurs, le script fonctionne pour le serveur en question...

C'est surtout ça que je ne comprend pas, car le dossier sur les serveurs que je vise existe déjà<br><br>Message édité par: talkk, à: 8/12/14 14:24

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

Plus d'informations
il y a 11 ans 3 mois #18547 par Arnaud Petitjean

si j'ouvre une fenêtre windows pointant vers le chemin de destination d'un des serveurs, le script fonctionne pour le serveur en question...


Ça c'est assez bizarre... :huh:

Sinon je pense à autre chose. Est-ce que le compte avec lequel tu exécutes ta commande a bien accès aux fichiers source ? Ça paraît con à dire mais dès fois le problème peut venir de là...

As-tu essayé de lancer ta commande de façon interactive et est-ce que ça fonctionne ?

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 11 ans 3 mois #18548 par Luca
Bizarre c'est le cas de le dire...

Le compte que je renseigne dans mon get-credentials est le compte que j'utilise pour accéder aux serveurs, que ce soit via l'explorateur windows (\\serveur\c$\...) ou via mstsc.

Lancer la commande de manière intéractive, c'est à dire ?
La quand je lance mon script j'ai une pop-up de login qui s'affiche, mes creds ne sont pas rentrés dans le code.

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

Plus d'informations
il y a 11 ans 3 mois #18549 par Arnaud Petitjean

de manière intéractive, c'est à dire ?

C'est à dire en tapant les commandes directement dans la console de façon unitaire.

Essaie de virer le foreach et dis-nous si ta ligne de commandes fonctionne comme il se devrait ?

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.

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