2014-11-24 81 views
1

我其中我執行其目的是要通過一個TFS 2013生成要執行的節點命令的powershell腳本:

node "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\r.js" -o "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\build-styles.js" 
$success = $? 
if (!$success){ 
    exit 1 
} 

當我手動運行該腳本和命令失敗$successfalse和腳本exits 1,但是當構建執行腳本並且命令node失敗時,$success(和$?)是true

什麼可以改變PowerShell的行爲?我不知道還有什麼可以嘗試的。到目前爲止,我消除了以下內容:

  1. 改變了構建服務用戶執行手動
  2. 試圖執行命令cmd /c node ...
  3. 試圖與Start-Process node...
  4. 冉執行命令的腳本在同一個管理用戶交互式構建服務
  5. 與VSO構建控制器和內部構建控制器一起構建
  6. 手動執行腳本與TFS使用的命令相同(每個生成日誌)

想法?

回答

0

我們是否可以重構這一點,讓我們對發生的事情有更好的感覺?我傾向於避免$?因爲它更難以調試和測試。

try 
{ 
    Write-Host "TF_BUILD_SOURCESDIRECTORY = $Env:TF_BUILD_SOURCESDIRECTORY" 
    $result = node "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\r.js" -o "$Env:TF_BUILD_SOURCESDIRECTORY\app\Proj\App_Build\build-styles.js" 
    Write-Host "Result = $result" 
} 
catch 
{ 
    Write-Error "Command failed" 
    Exit 1 
} 

有時候,我總結我在Start-Process -NoNewWindow -Wait命令只是爲了看看是否能產生不同的錯誤信息。

就你而言,我也會嘗試Enter-PSSession在TFS服務器上獲得非交互式提示。我已經看到了當shell不是交互式的情況下powerhell行爲不同的情況。

+0

命令出錯,但不會引發異常。 – 2014-11-25 01:46:11

相關問題