簡體   English   中英

使用 PowerShell 腳本執行 EXE 文件

[英]Executing an EXE file using a PowerShell script

我正在嘗試使用 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、函數的名稱、腳本文件或可運行的程序。 檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然后重試。

(我使用“&”運算符調用了該命令。)

我該如何解決這個問題?

& "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 "& `"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:\\Users\\Administrators\\Downloads> & '.\\aaa.exe'

安裝程序會彈出並按照屏幕上的說明進行操作。

  1. 克隆 $args
  2. 將你的參數推入新數組
  3. & $path $args

演示:

$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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM