2017-12-13 4 views
0

Kann mir bitte jemand vorschlagen, wie man die Validierung von Webjobs zu stoppen und starten richtig passiert oder nicht? Derzeit stoppe ich und starte die Webjobs über PowerShell, aber ich muss nach dem Stopp validieren und starten, ob richtig gemacht oder nicht. Bitte teile deine Gedanken dazu. Da suche ich ständig online und blogs nach der richtigen Lösung die keiner einmal bieten kann Die genaue Lösung dafür. Ich führe die PowerShell-Skripte über VSTS mit VSTS PowerShell Task.Oder sonst bitte aktualisieren Sie alle anderen Möglichkeiten, um Webjobs von VSTS zu validieren?Wie können Sie kontinuierliche Webjobs prüfen? Stop und Start ordnungsgemäß ausgeführt oder nicht über PowerShell?

+1

Sie scheinen zu fragen zu sein für jemanden einen Code für Sie zu schreiben. Stack Overflow ist eine Frage-Antwort-Website, kein Code-Schreibdienst. Bitte [siehe hier] (http://stackoverflow.com/help/how-to-ask) um zu erfahren, wie man effektive Fragen schreibt. – Clijsters

+0

Hi Clijsters, ich habe das Skript bei mir aber ich bin mir nicht sicher wo der Fehler liegt.So habe ich dieses Skript im Stack Forum gepostet aber keine Antwort von irgendjemand bekommen. So habe ich den neuen Thread auf dem selben geöffnet Problem.Ich weiter Leute bitten, mir zu meinem Problem zu helfen.Da ich keine Antwort erhalten habe, habe ich diesen neuen Thread geöffnet.Wenn Sie mir dabei helfen können, werde ich meinen vorhandenen Thread geöffnet @ https: // stackoverflow. com/questions/47694580/failing-mit-der-webjobs-validation-script? noredirect = 1 # comment82376212_47694580. Bitte hilfe hier und lass mich wissen, wo ist der fehler. – PRAVEEN

+0

Sehr geschätzt, wenn Sie mir bei meinem Problem helfen können. – PRAVEEN

Antwort

0

Es dauert ein paar Sekunden, um den Webjob zu stoppen, so dass Sie den Status nach ein paar Sekunden überprüfen können. Zum Beispiel:

[object]$paramObj=Get-Content "d:\a\r1\a\continuous\Scripts\Webjobs_Parameters.json" |ConvertFrom-Json 
    $userName =$paramObj.userName 
    $password =$paramObj.password 
    $webAppName =$paramObj.webAppName 
    $resourceGroup=$paramObj.resourceGroup 
    [object[]]$webJobs=$paramObj.webJobs 
$Apiversion="2016-08-01" 
$webJobArr=New-Object System.Collections.ArrayList 
    foreach($wj in $webjobs) 
    { 
    $webJobArr.Add($wj.name) 
    if($wj.typeName -eq "continuous") 
    { 
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action stop -ApiVersion $Apiversion -Force 
     Write-Host "continuous" 
    Write-Host "$wj.name is Stopping" 
    } 
    } 
$tryCount=4 
$i = 1 
while($i -lt $tryCount){ 
$errorsJobs=New-Object System.Collections.ArrayList 
Start-Sleep -s 5 
Write-Host "starting $i try......." 
$i +=1 

    $continuejobs=Get-AzureRmResource -ResourceGroupName $resourceGroup -ResourceName $webAppName -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion 
foreach($webJob in $continuejobs) 
{ 
if($webJobArr -contains $webJob.Properties.name){ 
    if($webJob.Properties.status -ne "Stopped"){ 
     $errorsJobs.Add($webJob.Properties.name) 
    } 
} 
} 
if($errorsJobs.Count -gt 0){ 
$result=$errorsJobs -join ";" 
Write-Host "Some jobs are not stopped: $result. Try to check again" 
} 
else{ 
Write-Host "All jobs are stopped." 
break 
} 
if(($i -eq $tryCount) -and ($errorsJobs.Count -gt 0)){ 
Write-Error "Some jobs are not stopped: $result." 
} 

} 

Update 1:

param(
[string]$currentEnv 
) 

[object]$paramObj=Get-Content "d:\a\r1\a\DSPPortalJobs\WebJobs_scripts\WebJob_list.json" |ConvertFrom-Json 
    $userName =$paramObj.$currentEnv.userName 
    $password =$paramObj.$currentEnv.password 
    $webAppName =$paramObj.$currentEnv.webAppName 
    $resourceGroup=$paramObj.$currentEnv.resourceGroup 
    [object[]]$webJobs=$paramObj.$currentEnv.webJobs 
$Apiversion="2016-08-01" 
$webJobArr=New-Object System.Collections.ArrayList 
    foreach($wj in $webjobs) 
     { 
     $webJobArr.Add($wj.name) 
} 
$tryCount=4 
$i = 1 
while($i -lt $tryCount){ 
$errorsJobs=New-Object System.Collections.ArrayList 
Start-Sleep -s 5 
Write-Host "starting $i try......." 
$i +=1 

    $continuejobs=Get-AzureRmResource -ResourceGroupName $resourceGroup -ResourceName $webAppName -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion 
foreach($webJob in $continuejobs) 
{ 
if($webJobArr -contains $webJob.Properties.name){ 
    if($webJob.Properties.status -ne "Running"){ 
     $errorsJobs.Add($webJob.Properties.name) 
    } 
} 
} 
if($errorsJobs.Count -gt 0){ 
$result=$errorsJobs -join ";" 
Write-Host "Some jobs are not Running: $result. Try to check again" 
} 
else{ 
Write-Host "All jobs are Running." 
break 
} 
if(($i -eq $tryCount) -and ($errorsJobs.Count -gt 0)){ 
Write-Error "Some jobs are not Running: $result." 
} 

} 
+0

Ich führe das obige Skript aus, aber wenn einer meiner Webjobs läuft, sollte er nicht mit dem nächsten Schritt fortfahren. Aber das obige Skript sagt, dass alle Jobs gestoppt sind. Ich führe das obige Skript in zwei verschiedenen Skripten aus, eine ist Webjobs zu stoppen und eine andere, um die Webjobs zu validieren. So funktioniert die Validierung nicht gut. Bitte helfen Sie mir hier. Ich habe meine Fehlerprotokoll @ https://1drv.ms/f/s!AvMxvVJdKJlVhxr5ZCmTk6WNvZwp angeschlossen.Bitte überprüfen und helfen ich raus. – PRAVEEN

+0

@ starian chen-MSFT, gemäß den oben genannten Links, die ich geteilt habe, unter meinen 4 webjobs, 2 webjobs laufen und 2 webjobs laufen nicht.So laut dem Skript sollte es scheitern, aber es ist nicht failing.So bitte helfen Sie mir. – PRAVEEN

+0

Sie müssen nicht die Webjobs in einer anderen Aufgabe validieren, tun Sie es einfach zusammen. Wenn Sie es immer noch in einer anderen Aufgabe validieren möchten, können Sie die Aktualisierung meiner Antwort überprüfen. Welchen Status möchten Sie validieren, ausführen oder stoppen? –

Verwandte Themen