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?
& "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"
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).
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.
Démo:
$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()
$myArgs += '-p'
$myArgs += $env:NGINX_HOME
& $exepath $myArgs