如何解决Service Fabric Start-ServiceFabricApplicationUpgrade - 如何让 powershell 在继续之前等待升级成功
我将不再使用 Azure DevOps 管道“升级 Service Fabric 应用程序”任务,而是用纯 PowerShell 方法替换它。
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/$(ServiceFabricApplicationName) -ApplicationTypeVersion $BuildNumber -ApplicationParameter $settings -Monitored -FailureAction Rollback
问题是,当我使用 devops 管道任务时,它会等待升级完成并在控制台窗口中显示输出。当我使用我的自定义 powershell 时,它会立即执行并转移到下一个管道任务,即使在我的集群中我可以看到升级刚刚开始。我怎样才能让它显示输出并在继续之前等待成功?
解决方法
此命令 Get-Service Fabric Application Upgrade 将获取 Service Fabric 应用程序升级的状态,因此我们可以在以下 PowerShell 脚本中使用它来获取此升级的结果。
## Start monitored application upgrade
try
{
Write-Host "Start upgrading application..."
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/$(ServiceFabricApplicationName) -ApplicationTypeVersion $BuildNumber -ApplicationParameter $settings -Monitored -FailureAction Rollback
}
catch
{
Write-Host ("Error starting upgrade. " + $_)
Write-Host "Unregister application..."
Unregister-ServiceFabricApplicationType -ApplicationTypeName fabric:/$(ServiceFabricApplicationName) -ApplicationTypeVersion $BuildNumber -Force
throw
}
do
{
Write-Host "Waiting for upgrade..."
Start-Sleep -Seconds 3
$upgradeStatus = Get-ServiceFabricApplicationUpgrade -ApplicationName fabric:/$(ServiceFabricApplicationName)
} while ($upgradeStatus.UpgradeState -ne "RollingBackCompleted" -and $upgradeStatus.UpgradeState -ne "RollingForwardCompleted" -and $upgradeStatus.UpgradeState -ne "Failed")
if($upgradeStatus.UpgradeState -eq "RollingForwardCompleted")
{
Write-Host "Upgrade completed successfully."
}
elseif($upgradeStatus.UpgradeState -eq "RollingBackCompleted")
{
Write-Error "Upgrade was Rolled back."
}
elseif($upgradeStatus.UpgradeState -eq "Failed")
{
Write-Error "Upgrade Failed."
}
因此,此 PowerShell 任务将在移动到下一个管道任务之前等待此升级的结果。
,尝试如下操作,它将等待脚本块完成并运行下一行。
$job = Start-Job -ScriptBlock{
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/$(ServiceFabricApplicationName) -ApplicationTypeVersion $BuildNumber -ApplicationParameter $settings -Monitored -FailureAction Rollback
}
Wait-Job $job.Name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。