Important Problème extension de variable script Powershell
- Damien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 3 semaines 6 jours #35269
par Damien
Problème extension de variable script Powershell a été créé 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.
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.
- Christophe MELIN
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 4
il y a 3 semaines 1 jour - il y a 3 semaines 1 jour #35305
par Christophe MELIN
Réponse de Christophe MELIN sur le sujet Problème extension de variable script Powershell
bonsoir,
Pas sûr de comprendre la syntaxe ${nom de variable}
Personnellement, j'aurais tendance à écrire :
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.
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 $cmd1) 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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Problème extension de variable script Powershell