أن أكبر وقت النوم يكون الحل بالنسبة فشل التحديث ؟
-
09-12-2019 - |
سؤال
لدي مشكلة مع التحديث حل على المزرعة.لذلك علينا تغيير بعض ميزات إضافة إلى اثنين من الميزات.وكانت التغييرات الرئيسية على القيام الميزة الرئيسية من الحل.
على اختبار لدينا سحابة workes بخير.على بيئة الاختبار لأول مرة يعمل بشكل جيد ولكن بعد نقل ذلك لم يعمل أي أكثر من ذلك.تحديث الميزات لم كلي المثبتة.هذا سيحدث في بيئة العميل أيضا وبعض آخر اختبار الانتشار قد حصلت نفس المشكلة.
لذلك قمنا بتغيير سيناريو التحديث قدمنا.في هذه النقطة لدينا وقت النوم بين التحديث-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);
}