Executing an EXE file using a PowerShell script
我正在尝试使用PowerShell脚本执行EXE文件。 如果我使用命令行,它可以正常工作(首先我提供可执行文件的名称和一系列参数来调用它):
1 | "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode |
但是在脚本中执行完全相同的操作会返回错误:
The term '"C:\Program Files\Automated
QA\TestExecute 8\Bin\TestExecute.exe"
C:\temp\TestProject1\TestProject1.pjs
/run /exit /SilentMode' is not
recognized as the name of a cmdlet,
function, script file, or operable
program. Check the spelling of the
name, or if a path was included,
verify that the path is correct and
try again.
(我使用"&"运算符调用了该命令。)
我该如何解决这个问题?
1 | &"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode |
要么
1 | [System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe","C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode") |
更新:抱歉,我错过了"(我使用"&"运算符调用了命令)"这句话。我在动态评估路径时遇到了这个问题。尝试调用表达式构造:
1 | Invoke-Expression"& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode" |
看起来您在单个字符串中同时指定了EXE及其第一个参数,例如;
1 | &"c:\some path with spaces\foo.exe" |
即
一旦您可以正常工作:
1 | &"c:\some path with spaces\foo.exe" |
根据需要开始引用参数。尽管看起来您的参数应该很好(没有空格,PowerShell不会解释其他特殊字符)。
演示:
1 2 3 4 5 6 7 | $exePath = $env:NGINX_HOME + '/nginx.exe' $myArgs = $args.Clone() $myArgs += '-p' $myArgs += $env:NGINX_HOME & $exepath $myArgs |
在Powershell中,将cd转到.exe文件位置。例如:
cd C: Users Administrators Downloads
PS C: Users Administrators Downloads>&'。 aaa.exe'
弹出安装程序,并按照屏幕上的说明进行操作。