Пакет решений SharePoint Развертывание случайных сбоев
Я постоянно вижу эту ошибку во время развертывания решения и / или активации функции...
Копирование этого файла не удалось. Эта операция использует службу администрирования SharePoint (spadmin), с которой невозможно связаться. Если служба остановлена или отключена, запустите ее и попробуйте снова.
Ниже приведен сценарий PowerShell, используемый для развертывания:
$programfiles_path = $null
$stsadm_path = $null
$url = $null
$solution = $null
$feature = $null
$appPoolName = $null
$url = "http://" + ${env:COMPUTERNAME}
$programfiles_path = ${env:ProgramW6432}
if ($programfiles_path -eq $null)
{
$programfiles_path = ${env:ProgramFiles}
}
$stsadm_path = $programfiles_path + "\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"
if(!(test-path $stsadm_path))
{
echo "stsadm.exe was not found: $stsadm_path"
exit -1
}
ECHO "***********************************"
ECHO "*** Contoso.Common.SolutionPackage ***"
ECHO "***********************************"
$solution = "Contoso.Common.SolutionPackage.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.Common.Infrastructure"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.CustomCAS"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.Common.WebParts"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.ExcelExtender"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*********************************"
ECHO "*** Contoso.Something ***"
ECHO "*********************************"
$solution = "Contoso.Something.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.Something"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*********************************"
ECHO "*** Contoso.Nothing ***"
ECHO "*********************************"
$solution = "Contoso.Nothing.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = $null
ECHO "*****************************************"
ECHO "*** Contoso.Everything ***"
ECHO "*****************************************"
$solution = "Contoso.Everything.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.Everything"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*****************************"
ECHO "*** Contoso.CashMoneyMillionaires ***"
ECHO "*****************************"
$solution = "Contoso.CashMoneyMillionaires.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.CashMoneyMillionaires"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "************************************"
ECHO "*** Contoso.DollaDollaBill ***"
ECHO "************************************"
$solution = "Contoso.DollaDollaBill.wsp"
ECHO "*** add the solution ***"
& $stsadm_path -o addsolution -filename $solution
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "*** deploy the solution ***"
& $stsadm_path -o deploysolution -name $solution -immediate -allowgacdeployment -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
$feature = "Contoso.DollaDollaBill"
ECHO "*** activate feature(s) ***"
& $stsadm_path -o activatefeature -name $feature -url $url -force
if ($? -eq $false) { exit }
ECHO "*** execute admin jobs ***"
& $stsadm_path -o execadmsvcjobs
if ($? -eq $false) { exit }
ECHO "************************"
ECHO "*** IIS APPPOOL MGMT ***"
ECHO "************************"
ECHO "*** query wmi for apppool ***"
$appPoolName = "SharedServices1"
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" | Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
if ($? -eq $false) { exit }
ECHO "*** recycle apppool ***"
$appPool.Recycle()
if ($? -eq $false) { exit }
У меня есть эквивалентный пакетный файл, который также случайным образом терпит неудачу. Сбой на разных серверах. Я совершенно сбит с толку относительно причины и решения.
Любая помощь будет оценена.
5 ответов
Лучшее, что я нашел для этого, - это Power Shell, который будет ожидать завершения отложенного задания таймера, прежде чем перейти к следующему заданию, однако вы можете сделать паузу, однако вам потребуется проверить, чтобы убедиться, что задание времени закончен.
Хитрость заключается в опросе сервера с использованием stsadm -o displayolution -name. если в ферме установлен wsp, команда возвращает некоторый xml, если для развертывания есть задание таймера, в xml есть тег "SolutionDeploymentJob". С помощью простого цикла вы можете дождаться окончания рабочего времени
Функция WaitForJobOn($name){ [xml]$val = stsadm -o displayolution -name $name while($val.Solution.SolutionDeploymentJob) { $log.Info("ожидание работы на $name") спать 5 [xml]$val = stsadm -o displayolution -name $name } $log.Info("Задание выполнено") }
использование:WaitForJobOn somefeature.wsp
Следует отметить, что функция не будет работать, если wsp не будет добавлен в ферму.
Я тоже сталкиваюсь с этой проблемой. Единственный способ обойти это - перезапускать службу администрирования Windows SharePoint Services каждый раз перед развертыванием / удалением.
ОБНОВЛЕНИЕ: я перезагрузил сервер WFE, и эта проблема исчезла. Хотелось бы, чтобы у меня было больше информации, почему, но классическое решение перезагрузки Microsoft снова преобладает.
Это очень раздражает.
ДРУГОЕ ОБНОВЛЕНИЕ: я только что выпустил команду stsadm под названием smartexecjobdefs, которая решает эту проблему. В этой записи блога я рассказываю об исполнителе определения задания, который отслеживает завершение выполнения заданий перед возвратом управления. Эта команда stsadm просто переносит этот класс.
Я считаю, что служба администрирования Windows SharePoint (SPAdmin) время от времени дает сбой в SP1 при использовании в ферме SharePoint с несколькими веб-интерфейсными серверами.
Я предлагаю отключить spadmim и запустить stsadm -o execadmsvcjobs с помощью инструмента удаленного выполнения, такого как psexec.
Пример:
psexec.exe @ serverlist.txt "C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \12\BIN\stsadm.exe" -o execadmsvcjobs
Вам нужно сделать паузу между развертыванием своего решения и попыткой активировать свои функции - это немного состязание.
Более того: если имеется несколько веб-интерфейсов, а подключение медленное, либо серверы заняты, или любое другое, из-за чего такие вещи могут занять некоторое время, - у вас возникают проблемы. Пакетные файлы не могут справиться с этим - сценарий Powershell может использовать объектную модель, чтобы проверить, действительно ли решение развернуто, прежде чем двигаться дальше.
У меня тоже была эта проблема. Каждый раз, когда я пытался развернуть решение, некоторые из файлов были скопированы, затем он остановился с этой ошибкой перед копированием всех из них. У меня нет никаких доказательств, но я считаю, что антивирусное программное обеспечение на сервере блокировало файлы и вмешивалось.
В конечном итоге это сработало после того, как я несколько раз пытался развернуть решение (каждый раз копируя на несколько файлов больше, чем раньше).