J'ai un fichier de commandes qui exécute un script PowerShell et j'ai besoin de transmettre deux paramètres au script. Dans mon lot, il ressemble à ceci:
powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\" "my path2\somefile.txt"
Dans l’état actuel des choses, les paramètres de mon script powershell sont complètement perturbés et j’obtiens:
- mon chemin1 "mon
- path2 \ somefile.txt
J'ai essayé encapsulant mes params avec '
et `
personnages et j'ai presque obtenu ce que je veux, mais le second caractère de citation reste dans le script Powershell. Ce que je reçois est ceci:
powershell -executionpolicy remotesigned -File "my script.ps1" "'my path1\'" "'my path2\somefile.txt'"
- 'mon chemin1 \'
- 'mon chemin2 \ un fichier.txt'
Et ce que je veux c'est ça
- mon chemin1 \
- mon path2 \ somefile.txt
Je sais que je peux supprimer les citations redondantes dans le script powershell, mais existe-t-il une meilleure façon de procéder? En d’autres termes, comment puis-je transmettre ces paramètres au PowerShell de manière à les maintenir sains d'esprit?
Testez le script PowerShell:
echo $args[0]
echo $args[1]
Réponses:
J'ai réussi à comprendre. Le problème était la barre oblique finale dans le premier paramètre. Cette barre oblique échappait à ma citation et à cause de cela, elle ne fonctionnait pas comme une citation (pourtant, PowerShell coupait toujours la chaîne plus tard pour une raison quelconque).
Mon fichier de commandes a été généré automatiquement mais j'ai réussi à le réparer en ajoutant une autre barre oblique à la fin du premier paramètre (qui devait se terminer par une barre oblique).
Ce problème n'est probablement pas spécifique aux fichiers de commandes et concerne également les scripts PowerShell en cours d'exécution à partir de la ligne de commande.
la source