Robocopy将以高于0的代码退出,但仍可能不是失败。 PSake检测到0以上的任何内容为失败并且无法构建。这很好,但是为什么仍然失败了:
task Deploy {
robocopy $source $dest /NP /S /XO /NFL /NDL /NJH /NJS | Out-Default
if ($lastexitcode -eq 3)
{
Write-Host "Got Here"
$lastexitcode = 0
}
Write-Host "Deploy local complete"
Write-Host $lastexitcode
}
TaskTearDown {
if ($LastExitCode -ne 0) {
write-host "Build failed"
exit 1
}
}
我可以验证Deploy if语句是否已命中,Write-Host是否正确输出0,但TaskTearDown仍然将最后一个退出代码检测为3!我该如何解决?
答案 0 :(得分:10)
robocopy
退出代码是非错误状态代码。只有8及以上的退出代码表示错误。请参阅here。
您的拆卸任务仍然报告退出代码为3的原因可能是因为自动变量$LastExitCode
是全局变量,而您的部署任务会创建一个额外的本地变量$lastexitcode
,用于屏蔽任务范围内的全局变量。正如this answer中对类似问题的建议,请使用$global:
前缀:
$global:LastExitCode = $null