Paramètres avec des barres d'espace mal analysées pour un script PowerShell exécuté à partir d'un fichier de commandes

0

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]
jahu
la source
Je viens de remarquer que le premier paramètre se termine par un caractère \ qui semble fonctionner comme un caractère d'échappement. Maintenant, je dois trouver un moyen de contourner le problème.
Jahu

Réponses:

0

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).

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\\" "my path2\somefile.txt"

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.

jahu
la source