障害のある更新のためのソリューションに大きな睡眠時間がありますか?

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

  •  09-12-2019
  •  | 
  •  

質問

農場上の解決策の更新に問題があります。そのため、いくつかの機能を変更し、2つの機能を追加しました。主な変化は解決策の主な特徴に対して行われました。

テストクラウドではうまくいきます。私たちのテスト環境では、最初にうまく機能しますが、再展開後、それ以上働いていません。更新された機能は完全にインストールされていませんでした。これは顧客環境でも起こり、他のテスト展開は同じ問題を抱えています。

だから我々が提供した更新スクリプトを変更しました。この時点で、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回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