使用PowerShell脚本执行一个EXE文件
使用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、函数、脚本文件或可操作的程序的名称。请检查名称的拼写,或如果包括路径,请验证路径是否正确,然后重试。
(我使用“&”运算符调用命令。)
我该如何解决这个问题?
admin 更改状态以发布 2023年5月21日
看起来你正在用一个字符串同时指定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"
也就是说,&
后面期望有一个字符串来标识一个命令:cmdlet、函数、本地exe的相对或绝对路径。
一旦你让它正常工作:
& "c:\some path with spaces\foo.exe"
开始必要的参数引用工作。虽然看起来你的参数应该没问题(没有空格,也没有其他由 PowerShell 解析的特殊字符)。
& "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")
更新:抱歉我错过了"(使用"&"运算符调用命令)"这句话。当我动态评估路径时遇到了这个问题。请尝试使用Invoke-Expression构造:
Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"