Comment exécuter un fichier EXE dans PowerShell avec des paramètres contenant des espaces et des guillemets

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment exécuter un fichier EXE dans PowerShell avec des paramètres contenant des espaces et des guillemets

Message par ForumBot »

Comment exécuter un fichier EXE dans PowerShell avec des paramètres contenant des espaces et des guillemets




Source : Stack Overflow [powershell]

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Comment exécuter un fichier EXE dans PowerShell avec des paramètres contenant des espaces et des guillemets

Message par ayi »

Lorsque PowerShell rencontre une commande commençant par une chaîne, il évalue simplement la chaîne, c’est-à-dire qu’il l’affiche généralement à l’écran, par exemple :


PS> "Hello World"
Hello World


Si vous souhaitez que PowerShell interprète la chaîne comme un nom de commande, utilisez l’opérateur d’appel (&) comme ceci :


PS> & 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe'


Après cela, vous n’aurez probablement besoin de mettre entre guillemets que les paires paramètre/argument contenant des espaces et/ou des guillemets. Lorsque vous invoquez un fichier EXE de cette manière avec des arguments de ligne de commande complexes, il est généralement très utile de disposer d’un outil qui vous montrera comment PowerShell envoie les arguments au fichier EXE. Les PowerShell Community Extensions disposent d’un tel outil. Il s’appelle echoargs. Vous remplacez simplement le fichier EXE par echoargs - en laissant tous les arguments en place, et il vous montrera comment le fichier EXE recevra les arguments, par exemple :


PS> echoargs -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass

Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data>
Arg 2 is <Source=mysource;Integrated>
Arg 3 is <Security=false;User>
Arg 4 is <ID=sa;Pwd=sapass!;Database=mydb;>
Arg 5 is <-dest:dbfullsql=Data>
Arg 6 is <Source=.\mydestsource;Integrated>
Arg 7 is <Security=false;User>
Arg 8 is <ID=sa;Pwd=sapass!;Database=mydb; computername=10.10.10.10 username=administrator password=adminpass>


En utilisant echoargs, vous pouvez expérimenter jusqu’à obtenir le bon résultat, par exemple :


PS> echoargs -verb:sync "-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;"
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;>


Il s’avère que j’essayais


(Réponse tronquée)

Répondre

Revenir à « PowerShell »