3

I am using below script to connect to remote server and shut the cluster service and then deploy packages. This is cluster service shut down script.

$SvcName = '${bamboo.ServiceName}'
$SvrNames = '${bamboo.deploy.hostname}'
#$SvcName = "'" + $SvcName + "'"
$SvrName = $SvrNames[0]
try {
  $services = Get-WmiObject -Computer $SvrName -Authentication PacketPrivacy -Namespace 'root\mscluster' MSCluster_Resource |
    Where {$_.Type -eq "Generic Service"} |
    Where {$_.name -eq $SvcName}
  if (-Not $Services) {
    $SvcName + " is not installed on this computer."
  } else {
    Switch($services.state) {
      '2' {
        Write-Host "Cluster service $SvcName is online"
        $SvcName = "'" + $SvcName + "'"
        $cmd  = "CLUSTER RES" + ' ' + $SvcName + ' ' + "/OFF"
        $cmd1 = [scriptblock]::Create($cmd)
        Invoke-Command -ComputerName $SvrName -ScriptBlock $cmd1
        Start-Sleep -s 10
        Write-Host "$SvcName is Offline"
      }
      '3' {
        Write-Host "Cluster service $SvcName is Offline"
        Write-Host $_.Exception
        Write-Host $_.Exception.Message
        Start-Sleep -s 10
        break 
      }
      '4'{
        Write-Host "Cluster service $SvcName is in Falied state, Please login to $SvrNames and check event logs"
        Start-Sleep -s 10
      }
    }
  }
} catch {
  $error[0].Exception
  Write-Host $_.Exception
  Write-Host $_.Exception.Message
  break
}

Why does Bamboo does not fail when there is a clear exception or an error message in the deploy logs?

Do I need to do something different here? $LASTEXITCODE doesn't work as well.

4

2 に答える 2

0

別の回避策を見つけました。

PowerShell のほとんどのエラーは、例外をスローします。理由は不明ですが、Bamboo はインライン スクリプトの実行時にそれを考慮していないようです。

次のように、インラインで例外をキャッチする独自の処理を行うことで、これを修正できます。

try 
{
    Call here some fancy PowerShell functions
}
catch
{
    Write-Host $_.Exception.GetType().FullName, $_.Exception.Message
    exit 500
    # or whatever code not 0
}

ということで、無事にデプロイを失敗させることができました。上記の $error[0] のインライン チェックも機能しますが、すべての例外が機能するとは限りません。

于 2016-02-15T19:46:51.570 に答える