2010-01-17 71 views
34

如何在PowerShell中運行可執行文件並通過if語句確定它是成功還是失敗?從PowerShell調用exe並獲得成功或失敗的反饋

更具體地說,我試圖讓devenv.exe從PowerShell腳本構建解決方案,我需要知道它是成功還是失敗。通過失敗了,我的意思是構建已經失敗,我假設devenv的是出來送點東西給殼(中stderr流中可能?)

我試着用&Invoke-ExpressionInvoke-Item,並設法讓所有的人運行exe。但我從來沒有能夠獲得成功/失敗的反饋。

+0

是否有一個理由,爲什麼你不使用msbuild.exe來構建解決方案,而不是devenv.exe的? – Filburt 2010-01-17 19:19:29

+1

唯一的原因是我不夠精通使用msbuild。我確實有一臺構建機器構建我的解決方案,但我不知道如何重用本地機器的構建定義:| – urig 2010-01-17 20:55:09

+3

如果您想試試這裏,請參考如何使用msbuild構建解決方案:http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx – Filburt 2010-01-18 12:04:54

回答

59

您是否嘗試過使用$LASTEXITCODE變量?它將包含被調用的最後一個.exe的退出代碼。

+2

這個技巧。 $ lastexitcode -eq 0成功時爲1,當構建失敗時爲1。 :) – urig 2010-01-18 17:23:13

+0

不起作用。變量是空的。 – 2017-04-27 14:15:07

+0

交互式地工作。但是,我想讓提示表明最後一條命令是否成功; '$ LastExitCode'僅在運行可執行文件時發生變化,因爲函數和CmdLets沒有「退出代碼」。提示中的內容可能會引起誤解,因爲我無法判斷退出代碼是否來自上次聲明。我希望CmdLets總是重置這個變量。 – 2018-01-19 14:51:40

2
.\YOUREXE.exe 
if($LASTEXITCODE eq 0) 
{ 
    Write-Host "The last PS command executed successfully" 
} 
else 
{ 
    Write-Host "The last PS command failed" 
}