2011-01-09 206 views
68

我想使用PowerShell腳本執行EXE文件。如果我使用命令行它的工作原理沒有問題(第一我公司供應的可執行文件和一系列參數的名稱來調用它):使用PowerShell腳本執行EXE文件

"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.

(我調用使用 「&」 操作命令。)

我怎樣才能解決這個問題呢?

+3

請發佈您的代碼。由於這是問題所在,因此讓它看起來比猜測容易得多。 – 2011-01-09 15:14:49

回答

79
& "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")

UPDATE:對不起,我錯過了 「(我調用使用命令」 & 「運算符)」 的句子。我在動態評估路徑時遇到了這個問題。嘗試調用 - 表達式構造:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"
+0

奇怪的是,原始問題中的命令幾乎完全適用於PS2.0中的虛擬機。但是同樣的命令現在在PS4.0系統上失敗了。有趣的是,我也叫TestExecute。我想我最喜歡選項2,我會給你一個鏡頭,謝謝! – EJA 2014-06-25 18:37:28

22

它看起來像你指定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解釋)。

+1

無論如何,如果腳本和exe文件位於同一個文件夾中,則無需執行完整路徑的powershell腳本?或者是否有可能使用相對路徑? – guanome 2012-09-28 21:38:54

-1

術語「greyhound.exe未被識別爲cmdlet,函數,腳本文件或可操作的程序的名稱...

但是,如果我運行它作爲一個可信任的命令。\ greyhound.exe那麼可執行文件運行。