Important Problème extension de variable script Powershell

Plus d'informations
il y a 3 semaines 6 jours #35269 par Damien
Bonjour,
J'ai un problème d'utilisation de variables en tant qu'arguments dans une commande "docker run" à l'intérieur d'un script Powershell (.ps1).

Si je lance cette commande directement dans une session Powershell sans passer par des variables, ça fonctionne bien, ex:
```powershell
docker run --rm -it -v "//c/my/path:/container/path" my_image -c "source /my_script /bin/bash"
```
Il y'a un entrypoint vers "/bin/bash" dans mon Dockerfile, d'où le "-c source..." que je veux passer en commande.
En vert et en bleu ce sont les 2 parties de la commande que je veux passer sous la forme de variables.

Si je lance depuis un script Powershell (.ps1) toujours sans utiliser de variable, aucun problème:
```powershell script
# foo.ps1
docker run --rm -it -v "//c/my/path:/container/path" my_image -c "source /my_script /bin/bash"
```

Le problème apparaît quand je remplace les parties en couleur par des variables, pour le debug j'ai afficher la commande complète, ex:
```
# foo.ps1
$volume = "-v `"//c/my/path:/container/path`" "
$cmd = "-c `"source /my_script /bin/bash`" "
Write-Host docker run --rm -it ${volume} my_image ${cmd}
docker run --rm -it ${volume} my_image ${cmd}
```

Le résultat de Write-Host:
 

La commande a l'air bonne et pourtant j'ai une erreur par rapport à $volume:
 

Peu importe que je mette le chemin sous format Windows (C:\), ou Unix (/c/ ou //c/), on voit qu'il ne reste qu'un seul "/" et qu'il y'a un espace devant le chemin qui vient de je ne sais où et qui est sûrement à l'origine de l'erreur.

Quelqu'un aurait-it une solution ?
Merci d'avance.
Pièces jointes :

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

Plus d'informations
il y a 3 semaines 1 jour - il y a 3 semaines 1 jour #35305 par Christophe MELIN
bonsoir,

Pas sûr de comprendre la syntaxe ${nom de variable}
Personnellement, j'aurais tendance à écrire :
# foo.ps1
$volume = '-v `"//c/my/path:/container/path`" '
$cmd = '-c `"source /my_script /bin/bash`" '
Write-Host "docker run --rm -it $volume my_image $cmd"
docker run --rm -it $volume my_image $cmd

1) Pour les variables, j'écris entre quote simple pour que le texte soit pris sans être interprété par powershell.
2) Personnellement, je n'aime pas trop appeler directement un exécutable dans un script powershell. Je me force à utiliser la cmdlet start-process. Cela permet un meilleur contrôle du process démarré (working directory, fenêtre séparée pour un programme console ou pas, fenêtre minimisée, maximisée, cachée, etc, attente de la fin ou pas.
Dernière édition: il y a 3 semaines 1 jour par Christophe MELIN.

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

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