我使用下面的脚本连接到远程服务器并关闭群集服务然后部署包。 这是集群服务关闭脚本。
$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
}
为什么在部署日志中出现明显异常或错误消息时,Bamboo不会失败?
我需要在这里做些不同的事吗?
$LASTEXITCODE
不起作用。
答案 0 :(得分: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]的内联检查也有效,但也许不是所有例外。
答案 1 :(得分:0)
{{1}}适用于我(如果失败的命令是上一个命令)