使用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然后该可执行文件运行。