실패한 업데이트에 대한 해결책이 더 긴 절전 시간이 될 수 있습니까?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/37446

  •  09-12-2019
  •  | 
  •  

문제

팜의 솔루션 업데이트에 문제가 있습니다.그래서 일부 기능을 변경하고 두 가지 기능을 추가했습니다.솔루션의 주요 기능에 주요 변경 사항이 적용되었습니다.

테스트 클라우드에서는 잘 작동합니다.테스트 환경에서는 처음에는 제대로 작동했지만 재배포 후에는 더 이상 작동하지 않았습니다.업데이트된 기능이 완전히 설치되지 않았습니다.이는 고객 환경에서도 발생하며 일부 다른 테스트 배포에서도 동일한 문제가 발생했습니다.

그래서 우리가 제공한 업데이트 스크립트를 변경했습니다.이 시점에서는 Update-SPSolution 명령과 배포된 기능의 모든 기능 업그레이드 사이에 휴면 시간이 있습니다.수면 시간을 20초에서 5분으로 늘렸습니다.

이제 새 업데이트가 제대로 진행되었지만 이전 상태를 다시 만들고 이전 업데이트 파일을 사용하여 솔루션을 다시 설치하고 싶었지만 이 방법도 잘 작동합니다 ;-).(그래 그게 더 나쁜 상황이야)

중요한 업데이트 프로세스는 다음과 같습니다.

Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false
Start-Sleep -Seconds $sleep
$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
    $f.Upgrade($false);
}

수면의 가치는 20번과 300번입니다.어쨌든, 이 절전 시간으로 인해 업데이트 문제가 해결되는 것은 아닐까?왜냐하면 나는 그렇게 생각하지 않기 때문이다.

매우 감사합니다.

도움이 되었습니까?

해결책

그만큼 Update-SPSolution 호출은 비동기적입니다.보다 정확하게는 이 명령은 최종적으로 실행될 타이머 작업만 생성합니다.

이 함수를 사용하여 작업 실행이 끝날 때까지 기다릴 수 있습니다.

function Wait-SPSolutionDeploymentJobToFinish
{
    param
    (
        [Parameter(Mandatory=$true)]
        [string]$SolutionFileName
    )
    process {
        $JobName = "*solution-deployment*$SolutionFileName*"
        $job = Get-SPTimerJob | ?{ $_.Name -like $JobName }
        if ($job -eq $null) 
        {
            Write-Host 'Timer job not found'
        }
        else
        {
            $JobFullName = $job.Name
            Write-Host -NoNewLine "Waiting to finish job $JobFullName"

            while ((Get-SPTimerJob $JobFullName) -ne $null) 
            {
                Write-Host -NoNewLine .
                Start-Sleep -Seconds 2
            }
            Write-Host  "Finished waiting for job.."
        }
    }
}

Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false


#Start-Sleep -Seconds $sleep
Wait-SPSolutionDeploymentJobToFinish $fileName

$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
    $f.Upgrade($false);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top