2016-11-18 6 views
0
if (Test-Path "c:\Temp\some.msi") 
{ 
    start-process -Wait -FilePath "msiexec.exe" -ArgumentList -somearguments 
} 
else   
{ 
    Write-Host "MSI does not exist at the specified location....c:\Temp\" 
    exit 1 
} 

$lastexitcode 
  1. ジェンキンスジョブを失敗しないの.msiは、それが他にあるものelseと印刷になり、指定したパスに存在しません。
  2. コードEXIT 1を追加しました。$ lastexitcodeの値は1になりますが、まだジェンキンズのWindows PowerShellジョブの表示が完了しました:成功しました。

誰かが間違っていることを指摘できますか?私はジェンキンの仕事が失敗したマークをしたい。私はジェンキンスには新しいです。

答えて

1

終了する前に;を忘れてしまった。

if (Test-Path "c:\Temp\some.msi") { start-process -Wait -FilePath "msiexec.exe" -ArgumentList -somearguments} 
else { Write-Host "MSI does not exist at the specified location....c:\Temp\"; Exit 1 } 

だから、ジェンキンスでPowerShellのプラグインはかなり遅れている、あなたはそれがエラーを理解するであろうので、それに終了コードを強制する必要があります。私は私のために働くが判明すると、次のとおりです。

if ($error) { $error; exit 1 } 

$error実行中に発生しているエラーでのPowerShellエンジンによって移入される変数です。だから存在すれば>エラーがあった>ビルドに失敗する必要がある。もちろん、try \ catchブロックでは動作しません。しかし、代わりとして。

関連する問題