9 votes

Comment échapper aux arguments de la ligne de commande dans PowerShell ?

Il semble que je puisse échapper aux arguments de la ligne de commande en utilisant des guillemets simples ou doubles :

PS C:\> echo Hello World
Hello
World
PS C:\> echo 'Hello World'
Hello World
PS C:\> echo "Hello World"
Hello World

Mais il y a encore quelque chose que je n'arrive pas à comprendre, c'est lorsque vous souhaitez exécuter un exécutable à partir d'un répertoire qui contient un espace :

PS C:\> c:\program files\test.exe
The term 'c:\program' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
At line:1 char:11
+ c:\program  <<<< files\test.exe
PS C:\> 'c:\program files\test.exe'
c:\program files\test.exe
PS C:\> "c:\program files\test.exe"
c:\program files\test.exe
PS C:\>

Comment faire pour que PowerShell exécute l'exécutable ci-dessus ?

20voto

Rad Points 6308

Essayez de mettre une esperluette avant la commande. Par exemple

& 'C:\Program Files\winscp\winscp.exe'

11voto

EBGreen Points 14478

Utilisez ça :

. "c:\program files\test.exe"

En fait, une solution encore meilleure serait :

Invoke-Item "c:\program files\test.exe"

ou en utilisant l'alias :

ii "c:\program files\test.exe"

L'utilisation de Invoke-Item signifie que le gestionnaire de fichiers approprié de Windows sera utilisé. Ainsi, pour un fichier EXE, il l'exécutera. Pour un fichier .doc par exemple, il l'ouvrira dans Microsoft Word.

Voici l'une des lignes de commande PowerShell les plus pratiques qui soient. Essayez-la :

ii .

5voto

Paul Hollingsworth Points 4257

Depuis, j'ai également découvert cette très bonne page Comprendre les modes d'analyse de PowerShell

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X