web-dev-qa-db-fra.com

Exécution d'un fichier EXE à l'aide d'un script PowerShell

J'essaie d'exécuter un fichier EXE à l'aide d'un script PowerShell. Si j'utilise la ligne de commande, cela fonctionne sans problème (je fournis d'abord le nom de l'exécutable et la série de paramètres pour l'appeler):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

Mais faire exactement la même chose dans un script renvoie une erreur:

Le terme '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run/exit/SilentMode ' n'est pas reconnu comme nom d'une applet de commande, fonction, fichier script ou utilisable programme. Vérifiez l'orthographe du nom, ou si un chemin a été inclus, vérifiez que le chemin est correct et que réessayer.

(J'ai appelé la commande en utilisant l'opérateur "&".)

Comment puis-je résoudre ce problème?

85
Eden
& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

ou

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

UPDATE: désolé d'avoir manqué "(j'ai appelé la commande à l'aide de la phrase" & "opérateur)". J'ai eu ce problème lorsque j'évaluais le chemin de manière dynamique. Essayez de construire Invoke-Expression:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"
104
Tomas Panik

On dirait que vous spécifiez à la fois le fichier EXE et son premier argument dans une seule chaîne, par exemple; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'. Cela ne marchera pas. En général, vous appelez une commande native ayant un espace dans son chemin comme ceci:

& "c:\some path with spaces\foo.exe" <arguments go here>

C'est-à-dire que & s'attend à être suivi d'une chaîne qui identifie une commande: applet de commande, fonction, chemin exe relatif ou absolu natif.

Une fois que vous obtenez ce travail:

& "c:\some path with spaces\foo.exe"

Commencez à travailler sur la citation des arguments si nécessaire. Bien que vos arguments semblent convenir (pas d'espaces, pas d'autres caractères spéciaux interprétés par PowerShell).

27
Keith Hill

Dans le Powershell, accédez au fichier .exe. Par exemple:

cd C:\Utilisateurs\Administrateurs\Téléchargements

PS C:\Utilisateurs\Administrateurs\Téléchargements> & '.\Aaa.exe'

Le programme d'installation apparaît et suivez les instructions à l'écran.

0
randomguy
  1. clone $ args
  2. Poussez vos arguments dans un nouveau tableau
  3. & $ path $ args

Démo:

$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()

$myArgs += '-p'
$myArgs += $env:NGINX_HOME

& $exepath $myArgs
0
NoDocCat