使用PowerShell脚本执行EXE文件

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

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

但是,在脚本中做同样的事情会返回一个错误:

术语 “C:\ Program Files \ Automated QA \ TestExecute 8 \ Bin \ TestExecute.exe”C:\ temp \ TestProject1 \ TestProject1.pjs / run / exit / SilentMode 不被识别为cmdlet的名称,函数,脚本文件或可操作的程序。 检查名称的拼写,或者如果包含path,请validationpath是否正确,然后重试。

(我使用“&”运算符来调用该命令。)

我该如何解决这个问题?

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

要么

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

更新:对不起,我错过了“(我使用”&“运算符调用该命令)”句子。 我在dynamic评估path时遇到了这个问题。 尝试调用expression式构造:

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

它看起来像你指定EXE和它的第一个参数在一个单一的string例如; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode' 。 这是行不通的。 一般来说,你调用一个在其path中有一个空格的本地命令,如下所示:

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

这是&期望后面是一个string,标识一个命令:cmdlet,函数,本机EXE相对或绝对path。

一旦你得到这个工作:

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

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

术语“greyhound.exe”不被识别为cmdlet,函数,脚本文件或可操作程序的名称…

但是,如果我运行它作为一个受信任的命令。\ greyhound.exe然后该可执行文件运行。