使用 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’< strong > 不是 识别为 cmdlet 的名称, 函数、脚本文件或可操作的 程序。检查 名称,或者如果包含路径, 验证路径是否正确,然后 再试一次

(我使用“ &”操作符调用了该命令。)

我怎样才能解决这个问题?

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

or

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

更新: 对不起,我错过了“(我使用“ &”操作符调用命令)”句子。我在动态评估路径时遇到了这个问题。尝试调用-表达式构造:

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'。没用的。一般情况下,调用本机命令的路径中有一个空格,如下所示:

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

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

一旦你做到了这一点:

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

必要时开始引用论点。虽然您的参数看起来应该没有问题(没有空格,没有 PowerShell 解释的其他特殊字符)。

在 Powershell,cd 到. exe 文件的位置,例如:

Cd C: 用户管理员下载

PS C: 用户管理员下载 > & & & &

安装程序弹出并按照屏幕上的指示操作。

  1. 克隆 $args
  2. 把你的参数放入新的数组
  3. 路径

演示:

$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()


$myArgs += '-p'
$myArgs += $env:NGINX_HOME


& $exepath $myArgs

由于不是开发人员,我找到了在一行中运行多个 ps 命令的解决方案。例如:

powershell "& 'c:\path with spaces\to\executable.exe' -arguments ; second command ; etc

通过在 & (与号)前面放置一个“(双引号) ,它执行可执行文件。在我发现的所有例子中都没有提到这一点。如果没有双引号,ps 提示将打开并等待输入。

下面是一些以前的回答的变体。下面的任何一个选项都可以添加到 Powershell 配置文件中,以满足您的需要。

用化名

如果你只是想运行一些东西,而不搞砸 $env:PATH

Set-Alias -Name docker -Value 'C:\Program Files\Docker\Docker\resources\bin\docker.exe'

使用函数

或者你需要更多的脚本。

function docker {
# below is a basic example - go crazy here
& 'C:\Program Files\Docker\Docker\resources\bin\docker.exe' @Args
}