使用PowerShell脚本执行EXE文件

Ede*_*den 101 powershell powershell-2.0

我正在尝试使用PowerShell脚本执行EXE文件.如果我使用命令行它没有问题(首先我提供可执行文件的名称和一系列参数来调用它):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode
Run Code Online (Sandbox Code Playgroud)

但是在脚本中执行完全相同的操作会返回错误:

术语 "C:\ Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe"C:\ temp\TestProject1\TestProject1.pjs/run/exit/SilentMode' 无法识别为cmdlet的名称,函数,脚本文件或可操作程序.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.

(我使用"&"运算符调用了命令.)

我该如何解决这个问题?

Tom*_*nik 113

& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode
Run Code Online (Sandbox Code Playgroud)

要么

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

更新:抱歉,我错过了"(我使用"&"运算符调用了命令)"句子.我在动态评估路径时遇到了这个问题.尝试调用表达式构造:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"
Run Code Online (Sandbox Code Playgroud)


Kei*_*ill 31

看起来你要在一个字符串中指定EXE和它的第一个参数,例如; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'.这不行.通常,您调用一个在其路径中有空格的本机命令,如下所示:

& "c:\some path with spaces\foo.exe" <arguments go here>
Run Code Online (Sandbox Code Playgroud)

即&预计应遵循的一个标识命令的字符串:cmdlet,函数,天然的exe相对或绝对路径.

一旦你完成了这项工作:

& "c:\some path with spaces\foo.exe"
Run Code Online (Sandbox Code Playgroud)

根据需要开始引用参数.虽然看起来你的参数应该没问题(没有空格,也没有PowerShell解释的其他特殊字符).

  • 如果exe在同一文件夹中,那么你可以这样做`.\ foo.exe`你也可以使用相对路径`..\..\foo.exe`和一个空格`&'的相对路径.\..\path with spaces\foo.exe'`. (7认同)
  • 如果脚本和exe在同一个文件夹中,是否有执行powershell脚本而没有完整路径?或者是否可以使用相对路径? (2认同)

小智 5

在 Powershell 中,cd 到 .exe 文件位置。例如:

cd C:\Users\Administrators\Downloads

PS C:\Users\Administrators\Downloads> & '.\aaa.exe'

弹出安装程序并按照屏幕上的说明进行操作。