2017-12-13 4 views
0

아무도 webjobs의 유효성 검사를 수행하는 방법을 제안하고 제대로 시작했는지 여부를 막을 수 있습니까? 현재 PowerShell을 통해 webjobs를 중지하고 시작하고 있지만 중지 후 유효성을 검사하고 올바르게 완료되었는지 여부를 알려줘야합니다.이 솔루션에 대한 의견을 공유하십시오. 적절한 해결책을 찾기 위해 지속적으로 온라인 및 블로그를 검색하고 있습니다. 이것에 대한 정확한 해결책입니다. 저는 VSTS PowerShell Task를 사용하여 VSTS를 통해 PowerShell 스크립트를 실행하고 있습니다. 그렇지 않으면 VSTS에서 webjob을 검증하는 다른 방법으로 업데이트 하시겠습니까?Continuously Webjobs를 확인하는 방법 PowerShell을 통해 올바르게 중지되었거나 시작되지 않았습니까?

+1

당신은 누군가가 당신을 위해 몇 가지 코드를 작성하기 위해 요구 될 것으로 보인다. 스택 오버플로는 질문 및 응답 사이트이며 코드 작성 서비스는 아닙니다. 효과적인 질문을 작성하는 법을 배우려면 [여기를보십시오] (http://stackoverflow.com/help/how-to-ask)를 참조하십시오. – Clijsters

+0

안녕하세요 Clijsters, 나와 함께 스크립트를 가지고 있지만 결함이 어디에 있는지 잘 모르겠습니다. 그래서 스택 포럼에 스크립트를 게시했지만 아무도 응답을받지 못했습니다. 그래서 같은 스레드에 새 스레드를 열었습니다. 나는 문제에 관해서 사람들을 도와달라고 요청했다. 응답을받지 못했기 때문에 나는이 새 스레드를 열었다. 당신이 나를 도울 수 있다면, @ https : // stackoverflow를 열어 기존 스레드를 공유 할 것이다. com/questions/47694580/webjobs-validation-scripting에 오류가 있습니까? noredirect = 1 # comment82376212_47694580. 여기서 도움을 받아 오류의 위치를 ​​알려주십시오. – PRAVEEN

+0

내 문제에 대해 도움을 주시면 감사하겠습니다. – PRAVEEN

답변

0

몇 초 후에 작업을 중단하면 몇 초 후에 상태를 확인할 수 있습니다.

[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." 
} 

} 

업데이트 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

위의 스크립트를 실행하고 있지만 내 웹 작업 중 하나가 실행되고 있으면 다음 단계로 진행하지 말아야합니다.하지만 위의 스크립트는 모든 작업이 중지되었다고 말하고 있습니다. 위의 스크립트는 두 개의 다른 스크립트로 실행 중입니다. 하나는 webjobs를 멈추고 다른 하나는 webjobs를 확인하는 것입니다. 따라서 유효성 검사가 제대로 작동하지 않습니다. 제발 도와주세요. 내 오류 로그를 첨부했습니다. @ https://1drv.ms/f/s!AvMxvVJdKJlVhxr5ZCmTk6WNvZwp. 확인하고 도움주세요. 나 밖으로. – PRAVEEN

+0

@ starian chen-MSFT, 내 4 개의 webjobs 중 2 개의 webjobs가 실행 중이며 2 개의 webjobs가 실행되고 있지 않습니다. 위의 링크를 따라 스크립트를 실행하면 오류가 발생하지만 실패하지는 않습니다. 제발 도와주세요. – PRAVEEN

+0

다른 작업에서 webjobs의 유효성을 검사 할 필요가 없습니다. 함께 수행하십시오. 그래도 다른 작업에서 유효성을 검사하려면 내 대답의 업데이트를 확인할 수 있습니다. 어떤 상태를 확인, 실행 또는 중단 하시겠습니까? –

관련 문제