使用PowerShell脚本执行EXE文件

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及其第一个参数,例如; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'。这行不通。通常,您会调用一个本机命令,该命令在其路径中具有空格,如下所示:

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

&后面应跟随一个标识命令的字符串:cmdlet,函数,本机exe相对路径或绝对路径。

一旦您可以正常工作:

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

根据需要开始引用参数。尽管看起来您的参数应该很好(没有空格,PowerShell不会解释其他特殊字符)。


  • 克隆$ args
  • 将您的参数推送到新数组中
  • &$路径$ args
  • 演示:

    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'

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