我运行下面的脚本来检查连续webjob的验证。作为我的部署过程的一部分,我停止webjobs并上传jar文件,然后启动webjobs.After启动webjobs.I需要验证是否正确启动所有连续webjobs。如果没有运行,它应该使我的VSTS powershell任务失败,并显示哪个连续的webjob没有运行。
所以在下面的脚本 $ status 变量只是采取第一个连续webjob的状态并进入循环并显示所有webjobs正在运行,但即使在启动所有连续的webjobs后,一些webjobs没有正确启动,在这种情况下我的脚本不应该说所有的webjobs都在运行。它应该使任务失败并显示哪些特定的webjobs没有运行。
任何人都可以帮助我解决这个问题。 如果需要,请帮助我更改我的脚本,因为我是powershell的新手。所以$ status变量应检查连续webjobs的所有状态,然后只进入循环并执行脚本并打印webjobs正在运行。
仅供参考,我通过VSTS运行powershell脚本并连接到Azure。
Powershell脚本:
$ResourceGroupName=""
$AppService=""
$Apiversion=""
##ContinuousWebJobs
$continuejob=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion
$status=$continuejob.Properties.status
#$status='Running'
$j=1
while($j -le 5)
{
if($status -ne 'Running')
{
$continuejob=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion
$status=$continuejob.Properties.status
$j+=1
"waiting for running, will sleep 6s..."
sleep 6
}else{
Write-Host "already running, exit this script" -BackgroundColor White -ForegroundColor Green
sleep 6
quit
}
}
Write-Host "Error:waiting for 30s already, The job is not running" -ForegroundColor Red -BackgroundColor Red
答案 0 :(得分:0)
参考此代码:
$ResourceGroupName="XXX"
$AppService="XXXX"
$Apiversion="2016-08-01"
$errorsJobs=New-Object System.Collections.ArrayList
$continuejobs=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion
foreach($webJob in $continuejobs){
Write-Host $webJob
$status=$webJob.Properties.status
if($status -ne "Running"){
$errorsJobs.Add($webJob.Properties.name)
}}
if($errorsJobs.Count -gt 0){
$result=$errorsJobs -join ";"
Write-Error $result
}